linux/drivers/scsi/ufs
Avri Altman 07106f86ae scsi: ufs: ufshpb: Use a correct max multi chunk
In HPB2.0, if pre_req_min_tr_len < transfer_len < pre_req_max_tr_len, the
driver is expected to send a HPB-WRITE-BUFFER companion to HPB-READ.

The upper bound should fit into a single byte, regardless of bMAX_
DATA_SIZE_FOR_HPB_SINGLE_CMD which being an attribute (u32) can be
significantly larger.

To further illustrate the issue, consider the following scenario:

 - SCSI_DEFAULT_MAX_SECTORS is 1024 limiting the I/O chunks to 512KB

 - The OEM changes scsi_host_template .max_sectors to be 2048 which allows
   for 1MB requests: transfer_len = 256

 - pre_req_max_tr_len = HPB_MULTI_CHUNK_HIGH = 256

 - ufshpb_is_supported_chunk() returns true (256 <= 256)

 - WARN_ON_ONCE(256 > 256) doesn't warn

 - ufshpb_set_hpb_read_to_upiu() casts transfer_len to u8: transfer_len = 0

 - The command is failing with ILLEGAL REQUEST

Link: https://lore.kernel.org/r/20210808090024.21721-3-avri.altman@wdc.com
Fixes: 41d8a9333c (scsi: ufs: ufshpb: Add HPB 2.0 support)
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2021-08-11 22:25:36 -04:00
..
cdns-pltfrm.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
Kconfig scsi: ufs: Add fault injection support 2021-08-03 07:27:42 -04:00
Makefile scsi: ufs: Add fault injection support 2021-08-03 07:27:42 -04:00
tc-dwc-g210-pci.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
tc-dwc-g210-pltfrm.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
tc-dwc-g210.c
tc-dwc-g210.h
ti-j721e-ufs.c scsi: ufs: ti-j721e-ufs: Fix error return in ti_j721e_ufs_probe() 2020-08-17 21:48:45 -04:00
ufs_bsg.c scsi: ufs: core: Enable power management for wlun 2021-05-10 22:28:20 -04:00
ufs_bsg.h
ufs_quirks.h scsi: ufs: core: Add L2P entry swap quirk for Micron UFS 2021-08-05 23:21:08 -04:00
ufs-debugfs.c scsi: ufs: core: Enable power management for wlun 2021-05-10 22:28:20 -04:00
ufs-debugfs.h scsi: ufs: core: Enable power management for wlun 2021-05-10 22:28:20 -04:00
ufs-exynos.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
ufs-exynos.h scsi: ufs: ufs-exynos: Move definitions from .h to .c 2021-05-21 16:07:23 -04:00
ufs-fault-injection.c scsi: ufs: Add fault injection support 2021-08-03 07:27:42 -04:00
ufs-fault-injection.h scsi: ufs: Add fault injection support 2021-08-03 07:27:42 -04:00
ufs-hisi.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
ufs-hisi.h scsi: ufs: ufs-hisi: Use device parameter initialization function 2020-11-17 01:03:18 -05:00
ufs-mediatek-trace.h scsi: ufs-mediatek: Use correct path to fix compile error 2020-12-09 12:00:26 -05:00
ufs-mediatek.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
ufs-mediatek.h scsi: ufs-mediatek: Keep VCC always-on for specific devices 2020-12-09 11:34:20 -05:00
ufs-qcom-ice.c scsi: ufs-qcom: Add Inline Crypto Engine support 2020-07-24 22:09:54 -04:00
ufs-qcom.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
ufs-qcom.h scsi: ufs: ufs-qcom: Use device parameter initialization function 2020-11-17 01:03:18 -05:00
ufs-sysfs.c scsi: ufs: core: Add lu_enable sysfs node 2021-08-05 23:21:13 -04:00
ufs-sysfs.h scsi: ufs: sysfs: Use the correct style for SPDX License Identifier 2020-01-02 21:57:44 -05:00
ufs.h scsi: ufs: ufshpb: Add HPB 2.0 support 2021-08-01 16:05:07 -04:00
ufshcd-crypto.c SCSI misc on 20210219 2021-02-22 10:24:58 -08:00
ufshcd-crypto.h scsi: ufs: use devm_blk_ksm_init() 2021-02-01 12:01:56 +01:00
ufshcd-dwc.c scsi: ufs-dwc: Use phy_initialization helper 2020-12-07 18:00:06 -05:00
ufshcd-dwc.h
ufshcd-pci.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
ufshcd-pltfrm.c scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
ufshcd-pltfrm.h scsi: ufs: Reduce power management code duplication 2021-08-02 21:43:57 -04:00
ufshcd.c scsi: ufs: ufshpb: Remove redundant initialization of variable 'lba' 2021-08-09 23:43:05 -04:00
ufshcd.h scsi: ufs: Synchronize SCSI and UFS error handling 2021-08-02 21:43:59 -04:00
ufshci-dwc.h
ufshci.h scsi: ufs: Revert "Utilize Transfer Request List Completion Notification Register" 2021-08-02 21:43:58 -04:00
ufshpb.c scsi: ufs: ufshpb: Rewind the read timeout on every read 2021-08-11 22:25:36 -04:00
ufshpb.h scsi: ufs: ufshpb: Use a correct max multi chunk 2021-08-11 22:25:36 -04:00
unipro.h scsi: ufs: Add enums for UniPro version higher than 1.6 2020-11-10 23:03:18 -05:00