linux-stable/drivers/scsi
Douglas Gilbert b6ff8ca733 scsi: scsi_debug: Parser tables and code interaction
This patch is in response to a static analyser report from Dan Carpenter
titled: "[bug report] scsi: scsi_debug: Add per_host_store option".  This
code may not clear the static analyzer reports, but may shed light on why
they occur. Amongst other things this driver has a table driven SCSI
command parser which also involves some C code. There are some invariants
between the table entries and the corresponding C code (i.e. the resp_*()
functions) that, if broken, may lead to a NULL dereference.  And the report
is valid, at least in the case of the PRE-FETCH command.  Alas, that is not
one of the cases that the static analyzer reported.

In this particular corner case: when the fake_rw flag is set and the table
entry for a "store"-accessing command does not have the required F_FAKE_RW
flag set, do the following. Call BUG_ON() in the devip2sip() very close to
a comment block explaining why it was called and how to fix it.
checkpatch.pl complains about the BUG_ON() but there is no reasonable
remedial action that can be taken at run time.

This change allows the code reported by the static analyzer to be
simplified. Comments were also added to the table flags (e.g.  F_FAKE_RW)
so developers who add commands might be more inclined to use them
(properly).

Link: https://lore.kernel.org/r/20200513013943.25285-1-dgilbert@interlog.com
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2020-05-19 22:25:52 -04:00
..
aacraid scsi: aacraid: Fix an oops in error handling 2020-05-14 20:24:01 -04:00
aic7xxx scsi: aic7xxx: Remove unnecessary NULL checks before kfree 2020-04-24 12:48:48 -04:00
aic94xx scsi: libsas: Replace zero-length array with flexible-array 2020-05-11 22:26:32 -04:00
arcmsr SCSI misc on 20200402 2020-04-02 17:03:53 -07:00
arm
be2iscsi scsi: be2iscsi: Use scnprintf() for avoiding potential buffer overflow 2020-03-17 13:36:09 -04:00
bfa scsi: bfa: Make bfad_iocmd_ioc_get_stats() static 2020-05-11 22:22:07 -04:00
bnx2fc scsi: bnx2fc: Remove unneeded semicolon in bnx2fc_fcoe.c 2020-04-24 18:21:15 -04:00
bnx2i
csiostor
cxgbi scsi: cxgb4i: Remove superfluous null check 2020-04-24 12:38:44 -04:00
cxlflash scsi: cxlflash: Fix error return code in cxlflash_probe() 2020-05-19 21:01:32 -04:00
device_handler
dpt scsi: docs: convert dpti.txt to ReST 2020-03-11 23:07:59 -04:00
esas2r
fcoe scsi: fcoe: remove unneeded semicolon in fcoe.c 2020-04-22 00:07:40 -04:00
fnic scsi: fnic: Use true, false for fnic->internal_reset_inprogress 2020-05-07 22:03:07 -04:00
hisi_sas scsi: hisi_sas: Stop returning error code from slot_complete_vX_hw() 2020-05-19 21:23:59 -04:00
ibmvscsi scsi: ibmvfc: Fix NULL return compiler warning 2020-03-11 23:07:57 -04:00
ibmvscsi_tgt
isci scsi: isci: Use true, false for bool variables 2020-04-24 18:21:15 -04:00
libfc SCSI misc on 20200410 2020-04-10 12:21:11 -07:00
libsas scsi: libsas: Add missing annotation for sas_ata_qc_issue() 2020-04-14 21:46:15 -04:00
lpfc scsi: lpfc: Remove redundant initialization to variable rc 2020-05-11 22:30:14 -04:00
megaraid scsi: megaraid_sas: Update driver version to 07.714.04.00-rc1 2020-05-11 23:06:24 -04:00
mpt3sas scsi: mpt3sas: Remove unused including <linux/version.h> 2020-05-11 23:09:21 -04:00
mvsas scsi: mvsas: remove unused symbol 'mvs_th' 2020-04-17 17:29:03 -04:00
pcmcia scsi: docs: convert NinjaSCSI.txt to ReST 2020-03-11 23:08:01 -04:00
pm8001 scsi: pm80xx: Introduce read and write length for IOCTL payload structure 2020-03-17 13:57:19 -04:00
qedf scsi: qedf: Get dev info after updating the params 2020-04-17 17:55:29 -04:00
qedi scsi: qedi: Remove unused variable udev & uctrl 2020-05-11 22:23:22 -04:00
qla2xxx scsi: qla2xxx: Fix endianness annotations in source files 2020-05-19 21:43:28 -04:00
qla4xxx scsi: qla4xxx: Remove unneeded semicolon in ql4_os.c 2020-04-24 18:21:16 -04:00
smartpqi scsi: smartpqi: Use scnprintf() for avoiding potential buffer overflow 2020-03-17 13:36:13 -04:00
snic scsi: snic: Make snic_io_exch_ver_cmpl_handler() return void 2020-04-24 18:21:15 -04:00
sym53c8xx_2
ufs scsi: ufs: Make ufshcd_wait_for_register() sleep instead of busy-waiting 2020-05-19 21:03:07 -04:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
3w-9xxx.c
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c
3w-xxxx.h
53c700.c
53c700.h
53c700.scr
53c700_d.h_shipped
a100u2w.c
a100u2w.h
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c
advansys.c scsi: advansys: Replace zero-length array with flexible-array member 2020-02-18 00:39:54 -05:00
aha152x.c scsi: docs: convert aha152x.txt to ReST 2020-03-11 23:07:58 -04:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c scsi: aha1740: Fix an errro handling path in aha1740_probe() 2020-03-26 21:10:53 -04:00
aha1740.h
am53c974.c
atari_scsi.c
atp870u.c
atp870u.h
BusLogic.c scsi: BusLogic: Remove conversion to bool in blogic_inquiry() 2020-04-24 18:21:14 -04:00
BusLogic.h
bvme6000_scsi.c
ch.c scsi: ch: remove ch_mutex() 2020-02-24 14:54:25 -05:00
constants.c scsi: core: Add DID_ALLOC_FAILURE and DID_MEDIUM_ERROR to hostbyte_table 2020-04-01 22:03:04 -04:00
dc395x.c scsi: dc395x: remove dc395x_bios_param 2020-03-26 22:51:18 -04:00
dc395x.h
dmx3191d.c
dpt_i2o.c scsi: dpt_i2o: Remove always false 'chan < 0' statement 2020-04-29 22:14:23 -04:00
dpti.h scsi: docs: convert dpti.txt to ReST 2020-03-11 23:07:59 -04:00
esp_scsi.c
esp_scsi.h
fdomain.c
fdomain.h
fdomain_isa.c
fdomain_pci.c
FlashPoint.c
g_NCR5380.c scsi: docs: convert g_NCR5380.txt to ReST 2020-03-11 23:08:00 -04:00
gdth.c scsi: gdth: Make __gdth_execute static 2020-04-14 21:32:39 -04:00
gdth.h
gdth_ioctl.h
gdth_proc.c scsi: gdth: Use scnprintf() for avoiding potential buffer overflow 2020-03-17 13:36:10 -04:00
gdth_proc.h
gvp11.c
gvp11.h
hosts.c scsi: core: add scsi_host_busy_iter() 2020-02-28 20:54:52 -05:00
hpsa.c scsi: hpsa: correct race condition in offload enabled 2020-03-26 22:44:41 -04:00
hpsa.h
hpsa_cmd.h
hptiop.c
hptiop.h
imm.c
imm.h
initio.c
initio.h
ipr.c scsi: ipr: Remove NULL check before freeing function 2020-04-24 18:21:15 -04:00
ipr.h SCSI misc on 20200402 2020-04-02 17:03:53 -07:00
ips.c
ips.h
iscsi_boot_sysfs.c
iscsi_tcp.c
iscsi_tcp.h
jazz_esp.c
Kconfig SCSI misc on 20200402 2020-04-02 17:03:53 -07:00
lasi700.c
libiscsi.c scsi: libiscsi: Fix error count for active session 2020-03-26 22:48:58 -04:00
libiscsi_tcp.c
mac53c94.c
mac53c94.h
mac_esp.c
mac_scsi.c
Makefile
megaraid.c scsi: simplify scsi_partsize 2020-03-24 07:57:07 -06:00
megaraid.h
mesh.c
mesh.h
mvme16x_scsi.c
mvme147.c
mvme147.h
mvumi.c
mvumi.h scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
myrb.c
myrb.h
myrs.c
myrs.h
ncr53c8xx.c scsi: docs: convert ncr53c8xx.txt to ReST 2020-03-11 23:08:01 -04:00
ncr53c8xx.h
NCR5380.c
NCR5380.h
nsp32.c
nsp32.h
nsp32_debug.c
nsp32_io.h
pmcraid.c scsi: pmcraid: Replace dma_pool_malloc with dma_pool_zalloc 2020-04-24 18:21:15 -04:00
pmcraid.h scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
ppa.c
ppa.h
ps3rom.c
qla1280.c scsi: qla1280: make qla1280_firmware_mutex and qla1280_fw_tbl static 2020-04-14 21:42:10 -04:00
qla1280.h
qlogicfas.c
qlogicfas408.c
qlogicfas408.h
qlogicpti.c
qlogicpti.h
raid_class.c
script_asm.pl
scsi.c scsi: core: Remove cmd_list functionality 2020-02-28 20:54:55 -05:00
scsi.h
scsi_common.c
scsi_debug.c scsi: scsi_debug: Parser tables and code interaction 2020-05-19 22:25:52 -04:00
scsi_debugfs.c
scsi_debugfs.h
scsi_devinfo.c
scsi_dh.c
scsi_error.c scsi: core: Fix incorrect usage of shost_for_each_device 2020-05-19 21:54:17 -04:00
scsi_ioctl.c
scsi_lib.c scsi: core: Refactor scsi_mq_setup_tags function 2020-05-19 21:55:15 -04:00
scsi_lib_dma.c
scsi_logging.c
scsi_logging.h
scsi_netlink.c
scsi_pm.c
scsi_priv.h scsi: core: Remove cmd_list functionality 2020-02-28 20:54:55 -05:00
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c scsi: core: Remove cmd_list functionality 2020-02-28 20:54:55 -05:00
scsi_sysctl.c
scsi_sysfs.c scsi: core: Use scnprintf() for avoiding potential buffer overflow 2020-03-17 13:36:12 -04:00
scsi_trace.c scsi: scsi_trace: Use get_unaligned_be24() 2020-03-16 22:08:36 -04:00
scsi_transport_api.h
scsi_transport_fc.c
scsi_transport_iscsi.c scsi: iscsi: Report unbind session event when the target has been removed 2020-03-31 21:39:58 -04:00
scsi_transport_sas.c
scsi_transport_spi.c
scsi_transport_srp.c
scsicam.c block: move struct partition out of genhd.h 2020-03-24 07:57:08 -06:00
sd.c scsi: sd: Add zoned capabilities device attribute 2020-05-19 21:18:26 -04:00
sd.h
sd_dif.c
sd_zbc.c scsi: sd_sbc: Fix sd_zbc_report_zones() 2020-02-24 12:50:32 -05:00
sense_codes.h
ses.c
sg.c
sgiwd93.c scsi: sgiwd93: Remove unneeded semicolon in sgiwd93.c 2020-04-24 18:21:29 -04:00
sim710.c
sni_53c710.c
sr.c scsi: sr: Use {get,put}_unaligned_be*() instead of open-coding these functions 2020-04-27 18:39:54 -04:00
sr.h scsi: sr: get rid of sr global mutex 2020-02-24 15:01:57 -05:00
sr_ioctl.c
sr_vendor.c scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled 2020-02-24 14:59:01 -05:00
st.c scsi: st: remove unneeded variable 'result' in st_release() 2020-04-22 00:05:29 -04:00
st.h
st_options.h
stex.c scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
storvsc_drv.c
sun3_scsi.c
sun3_scsi_vme.c
sun3x_esp.c
sun_esp.c
virtio_scsi.c scsi: core: remove .for_blk_mq 2020-02-10 22:46:55 -05:00
vmw_pvscsi.c scsi: vmw_pvscsi: Use true, false for adapter->use_msg 2020-05-07 22:03:54 -04:00
vmw_pvscsi.h
wd33c93.c
wd33c93.h
wd719x.c
wd719x.h
xen-scsifront.c
zalon.c
zorro7xx.c
zorro_esp.c scsi: zorro_esp: Restore devm_ioremap() alignment 2020-02-12 22:56:47 -05:00