linux_dsm_epyc7002/drivers/scsi
Damien Le Moal 51fdaa0490 scsi: sd_sbc: Fix sd_zbc_report_zones()
The block layer generic blk_revalidate_disk_zones() checks the validity of
zone descriptors reported by a disk using the blk_revalidate_zone_cb()
callback function executed for each zone descriptor. If a ZBC disk reports
invalid zone descriptors, blk_revalidate_disk_zones() returns an error and
sd_zbc_read_zones() changes the disk capacity to 0, which in turn results
in the gendisk structure capacity to be set to 0. This all works well for
the first revalidate pass on a disk and the block layer detects the
capactiy change.

On the second revalidate pass, blk_revalidate_disk_zones() is called again
and sd_zbc_report_zones() executed to check the zones a second time.
However, for this second pass, the gendisk capacity is now 0, which results
in sd_zbc_report_zones() to do nothing and to report success and no
zones. blk_revalidate_disk_zones() in turn returns success and sets the
disk queue chunk_sectors limit with zero as no zones were checked, causing
a oops to trigger on the BUG_ON(!is_power_of_2(chunk_sectors)) in
blk_queue_chunk_sectors().

Fix this by using the sdkp capacity field rather than the gendisk capacity
for the report zones loop in sd_zbc_report_zones(). Also add a check to
return immediately an error if the sdkp capacity is 0.  With this fix,
invalid/buggy ZBC disk scan does not trigger a oops and are exposed with a
0 capacity. This change also preserve the chance for the disk to be
correctly revalidated on the second revalidate pass as the scsi disk
structure capacity field is always set to the disk reported value when
sd_zbc_report_zones() is called.

Link: https://lore.kernel.org/r/20200219063800.880834-1-damien.lemoal@wdc.com
Fixes: d41003513e ("block: rework zone reporting")
Cc: Cc: <stable@vger.kernel.org> # v5.5
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2020-02-24 12:50:32 -05:00
..
aacraid treewide: Use sizeof_field() macro 2019-12-09 10:36:44 -08:00
aic7xxx SCSI misc on 20200129 2020-01-29 18:16:16 -08:00
aic94xx compat_ioctl: scsi: handle HDIO commands from drivers 2020-01-03 09:42:52 +01:00
arcmsr remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
arm scsi: Fix various misspellings of "connect" 2019-10-24 21:22:32 -04:00
be2iscsi remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
bfa scsi: bfa: Make restart_bfa static 2019-09-30 23:59:53 -04:00
bnx2fc remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
bnx2i remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
csiostor SCSI misc on 20200129 2020-01-29 18:16:16 -08:00
cxgbi SCSI fixes on 20191227 2019-12-27 17:28:41 -08:00
cxlflash SCSI misc on 20191130 2019-12-02 13:37:02 -08:00
device_handler SCSI fixes on 20191101 2019-11-07 06:43:18 -07:00
dpt treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
esas2r proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
fcoe SCSI misc on 20190919 2019-09-21 10:50:15 -07:00
fnic scsi: fnic: do not queue commands during fwreset 2020-01-20 23:58:14 -05:00
hisi_sas scsi: hisi_sas: Rename hisi_sas_cq.pci_irq_mask 2020-01-20 19:31:14 -05:00
ibmvscsi SCSI misc on 20190919 2019-09-21 10:50:15 -07:00
ibmvscsi_tgt scsi: ibmvscsi_tgt: remove set but not used variables 'iue' and 'sd' 2019-12-19 22:08:54 -05:00
isci compat_ioctl: scsi: handle HDIO commands from drivers 2020-01-03 09:42:52 +01:00
libfc scsi: libfc: free response frame from GPN_ID 2020-02-21 17:56:32 -05:00
libsas scsi: libsas: Tidy SAS address print format 2019-12-21 13:42:42 -05:00
lpfc scsi: lpfc: Make lpfc_defer_acc_rsp static 2020-01-10 01:23:47 -05:00
megaraid scsi: megaraid_sas: silence a warning 2020-02-12 19:13:48 -05:00
mpt3sas block, scsi: final compat_ioctl cleanup 2020-01-10 00:14:46 -05:00
mvsas compat_ioctl: scsi: handle HDIO commands from drivers 2020-01-03 09:42:52 +01:00
pcmcia remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
pm8001 scsi: pm80xx: fix spelling mistake "to" -> "too" 2020-01-30 10:31:47 -05:00
qedf scsi: Fix various misspellings of "connect" 2019-10-24 21:22:32 -04:00
qedi scsi: Fix various misspellings of "connect" 2019-10-24 21:22:32 -04:00
qla2xxx SCSI misc on 20200208 2020-02-08 17:24:41 -08:00
qla4xxx scsi: qla4xxx: Adjust indentation in qla4xxx_mem_free 2019-12-19 22:08:55 -05:00
smartpqi remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
snic scsi: snic: no need to check return value of debugfs_create functions 2019-01-29 00:40:54 -05:00
sym53c8xx_2 scsi: sym53c8xx: fix typos in comments 2019-12-19 22:08:54 -05:00
ufs scsi: ufs: fix spelling mistake "initilized" -> "initialized" 2020-01-30 10:31:47 -05:00
.gitignore
3w-9xxx.c scsi: 3w-9xxx: fix calls to dma_set_mask_and_coherent() 2019-02-25 21:37:25 -05:00
3w-9xxx.h
3w-sas.c SCSI fixes on 20190302 2019-03-02 11:39:54 -08:00
3w-sas.h
3w-xxxx.c compat_ioctl: move more drivers to compat_ptr_ioctl 2019-10-23 17:23:44 +02:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
53c700.h
53c700.scr
a100u2w.c cross-tree: phase out dma_zalloc_coherent() 2019-01-08 07:58:37 -05:00
a100u2w.h
a2091.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
a2091.h
a3000.c scsi: Use pr_warn instead of pr_warning 2019-10-18 15:01:54 +02:00
a3000.h
a4000t.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
advansys.c SCSI sg on 20190709 2019-07-11 15:17:41 -07:00
aha152x.c SCSI sg on 20190709 2019-07-11 15:17:41 -07:00
aha152x.h
aha1542.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
aha1542.h
aha1740.c
aha1740.h
am53c974.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
atari_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2019-11-12 22:21:34 -05:00
atp870u.c scsi: core: Clean up SG_NONE 2019-11-12 22:21:35 -05:00
atp870u.h
BusLogic.c scsi: BusLogic: use %lX for unsigned long rather than %X 2020-01-15 22:19:49 -05:00
BusLogic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 388 2019-06-05 17:37:11 +02:00
bvme6000_scsi.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
ch.c compat_ioctl: scsi: move ioctl handling into drivers 2020-01-03 09:42:32 +01:00
constants.c
dc395x.c
dc395x.h
dmx3191d.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
dpt_i2o.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
dpti.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
esp_scsi.c scsi: esp_scsi: Add support for FSC chip 2019-12-19 22:08:51 -05:00
esp_scsi.h scsi: esp_scsi: Add support for FSC chip 2019-12-19 22:08:51 -05:00
fdomain_isa.c scsi: fdomain_isa: use CFG1_IRQ_MASK 2019-07-30 12:18:24 -04:00
fdomain_pci.c scsi: fdomain: Resurrect driver - PCI support 2019-06-18 19:46:18 -04:00
fdomain.c scsi: fdomain: use BSTAT_{MSG|CMD|IO} in fdomain_work() 2019-07-30 12:17:28 -04:00
fdomain.h scsi: fdomain: Add register definitions 2019-06-18 19:46:22 -04:00
FlashPoint.c
g_NCR5380.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
gdth_ioctl.h scsi: gdth: remove dead code under #ifdef GDTH_IOCTL_PROC 2019-01-08 21:58:35 -05:00
gdth_proc.c scsi: gdth: use generic DMA API 2019-01-08 21:58:35 -05:00
gdth_proc.h scsi: gdth: remove gdth_{alloc,free}_ioctl 2019-01-08 21:57:42 -05:00
gdth.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 148 2019-05-30 11:25:18 -07:00
gdth.h scsi: gdth: remove ISA and EISA support 2019-01-08 21:58:35 -05:00
gvp11.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
gvp11.h
hosts.c scsi: core: avoid host-wide host_busy counter for scsi_mq 2019-11-01 20:12:50 -04:00
hpsa_cmd.h SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
hpsa.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
hpsa.h scsi: hpsa: correct device resets 2019-06-18 19:46:18 -04:00
hptiop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 285 2019-06-05 17:36:37 +02:00
hptiop.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 285 2019-06-05 17:36:37 +02:00
imm.c SCSI sg on 20190709 2019-07-11 15:17:41 -07:00
imm.h
initio.c scsi: initio: make initio_state_7() static 2019-12-19 22:08:54 -05:00
initio.h
ipr.c compat_ioctl: scsi: handle HDIO commands from drivers 2020-01-03 09:42:52 +01:00
ipr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
ips.c scsi: ips: make array 'options' static const, makes object smaller 2019-09-30 22:46:40 -04:00
ips.h
iscsi_boot_sysfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 287 2019-06-05 17:36:37 +02:00
iscsi_tcp.c scsi: iscsi: Don't destroy session if there are outstanding connections 2020-01-15 22:48:34 -05:00
iscsi_tcp.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
jazz_esp.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
Kconfig block: Allow t10-pi to be modular 2020-01-06 20:59:04 -07:00
lasi700.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
libiscsi_tcp.c SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
libiscsi.c scsi: iscsi: Fix a potential deadlock in the timeout handler 2019-12-09 19:19:28 -05:00
mac53c94.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
mac53c94.h
mac_esp.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
mac_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2019-11-12 22:21:34 -05:00
Makefile scsi: remove pointless $(MODVERDIR)/$(obj)/53c700.ver 2019-07-17 22:39:27 +09:00
megaraid.c scsi: megaraid: disable device when probe failed after enabled device 2019-09-23 23:09:42 -04:00
megaraid.h
mesh.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
mesh.h
mvme16x_scsi.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
mvme147.c
mvme147.h
mvumi.c SCSI sg on 20190709 2019-07-11 15:17:41 -07:00
mvumi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167 2019-05-30 11:26:39 -07:00
myrb.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
myrb.h scsi: mylex: Use the correct style for SPDX License Identifier 2020-01-02 21:57:44 -05:00
myrs.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
myrs.h scsi: mylex: Use the correct style for SPDX License Identifier 2020-01-02 21:57:44 -05:00
ncr53c8xx.c scsi: Fix various misspellings of "connect" 2019-10-24 21:22:32 -04:00
ncr53c8xx.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
NCR5380.c scsi: NCR5380: Add disconnect_mask module parameter 2019-11-19 21:37:34 -05:00
NCR5380.h Revert "scsi: ncr5380: Increase register polling limit" 2019-06-20 15:37:02 -04:00
nsp32_debug.c
nsp32_io.h
nsp32.c scsi: Fix various misspellings of "connect" 2019-10-24 21:22:32 -04:00
nsp32.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 118 2019-05-24 17:39:02 +02:00
pmcraid.c compat_ioctl: move more drivers to compat_ptr_ioctl 2019-10-23 17:23:44 +02:00
pmcraid.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
ppa.c scsi: ppa: use sg helper to iterate over scatterlist 2019-06-20 15:21:33 -04:00
ppa.h
ps3rom.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 164 2019-05-30 11:26:38 -07:00
qla1280.c scsi: qla1280: Make checking for 64bit support consistent 2020-01-20 18:35:55 -05:00
qla1280.h scsi: qla1280: Fix dma firmware download, if dma address is 64bit 2020-01-15 23:09:11 -05:00
qlogicfas408.c scsi: qlogicfas408: clean up a couple of indentation issues 2019-03-19 17:11:37 -04:00
qlogicfas408.h
qlogicfas.c
qlogicpti.c scsi: qlogicpti: Mark expected switch fall-throughs 2019-08-07 21:32:53 -04:00
qlogicpti.h scsi: qlogicpti: Use of_node_name_eq for node name comparisons 2019-02-13 22:07:03 -05:00
raid_class.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 437 2019-06-05 17:37:17 +02:00
script_asm.pl treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
scsi_common.c
scsi_debug.c scsi: scsi_debug: num_tgts must be >= 0 2019-11-19 21:37:34 -05:00
scsi_debugfs.c scsi: scsi_debugfs: Use for_each_set_bit to simplify code 2019-07-30 12:42:55 -04:00
scsi_debugfs.h scsi: core: add SPDX tags to scsi midlayer files missing licensing information 2019-05-21 06:16:21 -04:00
scsi_devinfo.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
scsi_dh.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
scsi_error.c scsi: core: save/restore command resid for error handling 2019-10-03 21:43:04 -04:00
scsi_ioctl.c compat_ioctl: add scsi_compat_ioctl 2020-01-03 09:33:18 +01:00
scsi_lib_dma.c
scsi_lib.c scsi: core: Adjust DBD setting in MODE SENSE for caching mode page per LLD 2019-12-19 22:08:52 -05:00
scsi_logging.c scsi: core: Log SCSI command age with errors 2019-09-30 23:07:16 -04:00
scsi_logging.h scsi: core: Fix a compiler warning triggered by the SCSI logging code 2019-12-19 22:08:54 -05:00
scsi_netlink.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
scsi_pm.c scsi: core: remove dummy q->dev check 2019-09-12 07:11:58 -06:00
scsi_priv.h scsi: core: avoid host-wide host_busy counter for scsi_mq 2019-11-01 20:12:50 -04:00
scsi_proc.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
scsi_sas_internal.h
scsi_scan.c scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT 2019-04-15 22:25:00 -04:00
scsi_sysctl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 209 2019-05-30 11:29:53 -07:00
scsi_sysfs.c SCSI misc on 20191130 2019-12-02 13:37:02 -08:00
scsi_trace.c scsi: tracing: Fix handling of TRANSFER LENGTH == 0 for READ(6) and WRITE(6) 2019-11-06 00:06:03 -05:00
scsi_transport_api.h
scsi_transport_fc.c SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
scsi_transport_iscsi.c scsi: iscsi: Fail session and connection on transport registration failure 2020-01-15 22:55:37 -05:00
scsi_transport_sas.c scsi: scsi_transport_sas: Fix memory leak when removing devices 2019-11-21 21:12:39 -05:00
scsi_transport_spi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
scsi_transport_srp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 502 2019-06-19 17:09:56 +02:00
scsi.c SCSI misc on 20191130 2019-12-02 13:37:02 -08:00
scsi.h
scsicam.c
sd_dif.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 410 2019-06-05 17:37:14 +02:00
sd_zbc.c scsi: sd_sbc: Fix sd_zbc_report_zones() 2020-02-24 12:50:32 -05:00
sd.c SCSI misc on 20200129 2020-01-29 18:16:16 -08:00
sd.h SCSI misc on 20191207 2019-12-08 12:23:42 -08:00
sense_codes.h
ses.c SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
sg.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
sgiwd93.c
sim710.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
sni_53c710.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
sr_ioctl.c
sr_vendor.c sr_vendor: support Beurer GL50 evo CD-on-a-chip devices. 2019-11-26 13:02:26 -07:00
sr.c compat_ioctl: move cdrom commands into cdrom.c 2020-01-03 09:42:52 +01:00
sr.h
st_options.h
st.c compat_ioctl: scsi: move ioctl handling into drivers 2020-01-03 09:42:32 +01:00
st.h
stex.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
storvsc_drv.c scsi: storvsc: Correctly set number of hardware queues for IDE disk 2020-01-15 23:02:24 -05:00
sun3_scsi_vme.c
sun3_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2019-11-12 22:21:34 -05:00
sun3x_esp.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
sun_esp.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
virtio_scsi.c scsi: virtio_scsi: unplug LUNs when events missed 2019-09-10 22:10:17 -04:00
vmw_pvscsi.c scsi: vmw_pvscsi: Silence dma mapping errors 2019-12-19 22:42:44 -05:00
vmw_pvscsi.h
wd33c93.c scsi: wd33c93: Mark expected switch fall-through 2019-08-07 21:35:59 -04:00
wd33c93.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 118 2019-05-24 17:39:02 +02:00
wd719x.c SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
wd719x.h
xen-scsifront.c
zalon.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
zorro7xx.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
zorro_esp.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00