[SCSI] megaraid: fix sparse warnings
There's a zero day mistake in the megaraid driver in that the code that obtains the version number does a >> 8 on a char quantity. This >>8 causes a sparse warning because it always produces zero. Al Viro suggested these shifts should be >> 4 thus treating the firmware version as a BCD quantity. However, in the interests of safety we've elected to replace the >> 8 quantities with an explicit zero, thus quieting the sparse warning while preserving the same (albeit incorrect) version number as had previously been seen. Signed-off-by: Adam Radford <aradford@gmail.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
committed by
James Bottomley
parent
7e95fffe08
commit
124dd90f65
@@ -306,19 +306,22 @@ mega_query_adapter(adapter_t *adapter)
|
|||||||
adapter->host->sg_tablesize = adapter->sglen;
|
adapter->host->sg_tablesize = adapter->sglen;
|
||||||
|
|
||||||
|
|
||||||
/* use HP firmware and bios version encoding */
|
/* use HP firmware and bios version encoding
|
||||||
|
Note: fw_version[0|1] and bios_version[0|1] were originally shifted
|
||||||
|
right 8 bits making them zero. This 0 value was hardcoded to fix
|
||||||
|
sparse warnings. */
|
||||||
if (adapter->product_info.subsysvid == HP_SUBSYS_VID) {
|
if (adapter->product_info.subsysvid == HP_SUBSYS_VID) {
|
||||||
sprintf (adapter->fw_version, "%c%d%d.%d%d",
|
sprintf (adapter->fw_version, "%c%d%d.%d%d",
|
||||||
adapter->product_info.fw_version[2],
|
adapter->product_info.fw_version[2],
|
||||||
adapter->product_info.fw_version[1] >> 8,
|
0,
|
||||||
adapter->product_info.fw_version[1] & 0x0f,
|
adapter->product_info.fw_version[1] & 0x0f,
|
||||||
adapter->product_info.fw_version[0] >> 8,
|
0,
|
||||||
adapter->product_info.fw_version[0] & 0x0f);
|
adapter->product_info.fw_version[0] & 0x0f);
|
||||||
sprintf (adapter->bios_version, "%c%d%d.%d%d",
|
sprintf (adapter->bios_version, "%c%d%d.%d%d",
|
||||||
adapter->product_info.bios_version[2],
|
adapter->product_info.bios_version[2],
|
||||||
adapter->product_info.bios_version[1] >> 8,
|
0,
|
||||||
adapter->product_info.bios_version[1] & 0x0f,
|
adapter->product_info.bios_version[1] & 0x0f,
|
||||||
adapter->product_info.bios_version[0] >> 8,
|
0,
|
||||||
adapter->product_info.bios_version[0] & 0x0f);
|
adapter->product_info.bios_version[0] & 0x0f);
|
||||||
} else {
|
} else {
|
||||||
memcpy(adapter->fw_version,
|
memcpy(adapter->fw_version,
|
||||||
|
Reference in New Issue
Block a user