scsi: Fix VPD page wrapper
PATCH 1/1 scsi: Fix VPD page wrapper
Fix two bugs in the VPD page wrapper:
- Don't return failure if the user asked for page 0
- The end of buffer check failed to account for the page header size and consequently didn't work
Signed-off-by Martin K. Petersen <[email protected]>
---
drivers/scsi/scsi.c +2 -2
@@ -1046,13 +1046,13 @@ int scsi_get_vpd_page(struct scsi_device *sdev, u8 page, unsigned char *buf,/* If the user actually wanted this page, we can skip the rest */ if (page ==0 ) -return -EINVAL ; +return 0 ;for (i =0 ; i <min ((int )buf[3 ], buf_len -4 ); i++)if (buf[i +4 ] == page) goto found; -if (i < buf[3 ] && i > buf_len) +if (i < buf[3 ] && i >= buf_len -4 )/* ran off the end of the buffer, give us benefit of doubt */ goto found;/* The device claims it doesn't support the requested page */