mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 07:00:48 +00:00
[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: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
9d2696e658
commit
4d24834dfd
@ -873,7 +873,7 @@ static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsign
|
||||
SHOST_DIF_TYPE2_PROTECTION,
|
||||
SHOST_DIF_TYPE3_PROTECTION };
|
||||
|
||||
if (target_type > SHOST_DIF_TYPE3_PROTECTION)
|
||||
if (target_type >= ARRAY_SIZE(cap))
|
||||
return 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
|
||||
SHOST_DIX_TYPE2_PROTECTION,
|
||||
SHOST_DIX_TYPE3_PROTECTION };
|
||||
|
||||
if (target_type > SHOST_DIX_TYPE3_PROTECTION)
|
||||
if (target_type >= ARRAY_SIZE(cap))
|
||||
return 0;
|
||||
|
||||
return shost->prot_capabilities & cap[target_type];
|
||||
|
Loading…
x
Reference in New Issue
Block a user