提交 124dd90f 编写于 作者: A adam radford 提交者: James Bottomley

[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: NAdam Radford <aradford@gmail.com>
Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
上级 7e95fffe
...@@ -306,19 +306,22 @@ mega_query_adapter(adapter_t *adapter) ...@@ -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,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册