Re: [PATCH 1/2] scsi: sd: Use revalidate buffer for VPD pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2019-02-27 at 22:57 -0500, Martin K. Petersen wrote:
+AD4 No point in allocating separate memory for the VPD pages we're
+AD4 querying. Use the buffer we already allocated.
+AD4 
+AD4 Signed-off-by: Martin K. Petersen +ADw-martin.petersen+AEA-oracle.com+AD4
+AD4 ---
+AD4  drivers/scsi/scsi.c +AHw  1 +-
+AD4  drivers/scsi/sd.c   +AHw 48 +-+-+-+-+-+-+-+-+-+-+-+-+-+--------------------------------
+AD4  2 files changed, 16 insertions(+-), 33 deletions(-)
+AD4 
+AD4 diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
+AD4 index 7675ff0ca2ea..1d58e466722f 100644
+AD4 --- a/drivers/scsi/scsi.c
+AD4 +-+-+- b/drivers/scsi/scsi.c
+AD4 +AEAAQA -341,6 +-341,7 +AEAAQA static int scsi+AF8-vpd+AF8-inquiry(struct scsi+AF8-device +ACo-sdev, unsigned char +ACo-buffer,
+AD4  	cmd+AFs-3+AF0 +AD0 len +AD4APg 8+ADs
+AD4  	cmd+AFs-4+AF0 +AD0 len +ACY 0xff+ADs
+AD4  	cmd+AFs-5+AF0 +AD0 0+ADs		/+ACo Control byte +ACo-/
+AD4 +-	memset(buffer, 0x0, len)+ADs

Why has this memset() call been added? Please explain this change in the
patch description if you want to keep this change.

+AD4  	/+ACo
+AD4  	 +ACo I'm not convinced we need to try quite this hard to get VPD, but
+AD4 diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
+AD4 index cc175b78b366..df9538e57dcb 100644
+AD4 --- a/drivers/scsi/sd.c
+AD4 +-+-+- b/drivers/scsi/sd.c
+AD4 +AEAAQA -2879,16 +-2879,14 +AEAAQA static void sd+AF8-read+AF8-app+AF8-tag+AF8-own(struct scsi+AF8-disk +ACo-sdkp, unsigned char +ACo-buffer)
+AD4   +ACo sd+AF8-read+AF8-block+AF8-limits - Query disk device for preferred I/O sizes.
+AD4   +ACo +AEA-sdkp: disk to query
+AD4   +ACo-/
+AD4 -static void sd+AF8-read+AF8-block+AF8-limits(struct scsi+AF8-disk +ACo-sdkp)
+AD4 +-static void sd+AF8-read+AF8-block+AF8-limits(struct scsi+AF8-disk +ACo-sdkp, unsigned char +ACo-buffer)
+AD4  +AHs
+AD4  	unsigned int sector+AF8-sz +AD0 sdkp-+AD4-device-+AD4-sector+AF8-size+ADs
+AD4  	const int vpd+AF8-len +AD0 64+ADs
+AD4 -	unsigned char +ACo-buffer +AD0 kmalloc(vpd+AF8-len, GFP+AF8-KERNEL)+ADs
+AD4  
+AD4 -	if (+ACE-buffer +AHwAfA
+AD4 -	    /+ACo Block Limits VPD +ACo-/
+AD4 -	    scsi+AF8-get+AF8-vpd+AF8-page(sdkp-+AD4-device, 0xb0, buffer, vpd+AF8-len))
+AD4 -		goto out+ADs
+AD4 +-	/+ACo Block Limits VPD +ACo-/
+AD4 +-	if (scsi+AF8-get+AF8-vpd+AF8-page(sdkp-+AD4-device, 0xb0, buffer, vpd+AF8-len))
+AD4 +-		return+ADs
+AD4  
+AD4  	blk+AF8-queue+AF8-io+AF8-min(sdkp-+AD4-disk-+AD4-queue,
+AD4  			 get+AF8-unaligned+AF8-be16(+ACY-buffer+AFs-6+AF0) +ACo sector+AF8-sz)+ADs
+AD4 +AEAAQA -2902,7 +-2900,7 +AEAAQA static void sd+AF8-read+AF8-block+AF8-limits(struct scsi+AF8-disk +ACo-sdkp)
+AD4  		sdkp-+AD4-max+AF8-ws+AF8-blocks +AD0 (u32)get+AF8-unaligned+AF8-be64(+ACY-buffer+AFs-36+AF0)+ADs
+AD4  
+AD4  		if (+ACE-sdkp-+AD4-lbpme)
+AD4 -			goto out+ADs
+AD4 +-			return+ADs
+AD4  
+AD4  		lba+AF8-count +AD0 get+AF8-unaligned+AF8-be32(+ACY-buffer+AFs-20+AF0)+ADs
+AD4  		desc+AF8-count +AD0 get+AF8-unaligned+AF8-be32(+ACY-buffer+AFs-24+AF0)+ADs
+AD4 +AEAAQA -2934,28 +-2932,21 +AEAAQA static void sd+AF8-read+AF8-block+AF8-limits(struct scsi+AF8-disk +ACo-sdkp)
+AD4  				sd+AF8-config+AF8-discard(sdkp, SD+AF8-LBP+AF8-DISABLE)+ADs
+AD4  		+AH0
+AD4  	+AH0
+AD4 -
+AD4 - out:
+AD4 -	kfree(buffer)+ADs
+AD4  +AH0

I would appreciate it if the buffer length would be passed as an argument.
That would make it easier to verify sd+AF8-read+AF8-block+AF8-limits() and its callers.

Thanks,

Bart.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux