提交 4d24834d 编写于 作者: M Martin K. Petersen 提交者: James Bottomley

[SCSI] Fix range check in scsi_host_dif_capable()

The range checking from fe542396 was bad. We would still end up walking
beyond the array as Type 3 is defined to be 4 in the protection
bitmask. Instead use ARRAY_SIZE() for the range check.
Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
上级 9d2696e6
...@@ -873,7 +873,7 @@ static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsign ...@@ -873,7 +873,7 @@ static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsign
SHOST_DIF_TYPE2_PROTECTION, SHOST_DIF_TYPE2_PROTECTION,
SHOST_DIF_TYPE3_PROTECTION }; SHOST_DIF_TYPE3_PROTECTION };
if (target_type > SHOST_DIF_TYPE3_PROTECTION) if (target_type >= ARRAY_SIZE(cap))
return 0; return 0;
return shost->prot_capabilities & cap[target_type] ? target_type : 0; return shost->prot_capabilities & cap[target_type] ? target_type : 0;
...@@ -887,7 +887,7 @@ static inline unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsign ...@@ -887,7 +887,7 @@ static inline unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsign
SHOST_DIX_TYPE2_PROTECTION, SHOST_DIX_TYPE2_PROTECTION,
SHOST_DIX_TYPE3_PROTECTION }; SHOST_DIX_TYPE3_PROTECTION };
if (target_type > SHOST_DIX_TYPE3_PROTECTION) if (target_type >= ARRAY_SIZE(cap))
return 0; return 0;
return shost->prot_capabilities & cap[target_type]; return shost->prot_capabilities & cap[target_type];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册