linux/drivers/scsi/qla2xxx
Quinn Tran e3dde080eb scsi: qla2xxx: Fix unintialized List head crash
In case of IOCB Queue full or system where memory is low and driver
receives large number of RSCN storm, the stale sp pointer can stay on
gpnid_list resulting in page_fault.

This patch fixes this issue by initializing the sp->elem list head and
removing sp->elem before memory is freed.

Following stack trace is seen

 9 [ffff987b37d1bc60] page_fault at ffffffffad516768 [exception RIP: qla24xx_async_gpnid+496]
10 [ffff987b37d1bd10] qla24xx_async_gpnid at ffffffffc039866d [qla2xxx]
11 [ffff987b37d1bd80] qla2x00_do_work at ffffffffc036169c [qla2xxx]
12 [ffff987b37d1be38] qla2x00_do_dpc_all_vps at ffffffffc03adfed [qla2xxx]
13 [ffff987b37d1be78] qla2x00_do_dpc at ffffffffc036458a [qla2xxx]
14 [ffff987b37d1bec8] kthread at ffffffffacebae31

Fixes: 2d73ac6102 ("scsi: qla2xxx: Serialize GPNID for multiple RSCN")
Cc: <stable@vger.kernel.org> # v4.17+
Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-07-19 22:02:33 -04:00
..
Kconfig scsi: qla2xxx: avoid unused-function warning 2017-07-01 17:14:58 -04:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qla_attr.c scsi: qla2xxx: Use zeroing allocator rather than allocator/memset 2018-01-04 01:09:26 -05:00
qla_bsg.c scsi: qla2xxx: Use dma_pool_zalloc() 2018-02-22 20:28:43 -05:00
qla_bsg.h
qla_dbg.c Merge branch 'fixes' into misc 2018-04-03 17:38:39 -07:00
qla_dbg.h scsi: qla2xxx: Include Exchange offload/Extended Login into FW dump 2017-06-27 21:21:41 -04:00
qla_def.h scsi: qla2xxx: Fix inconsistent DMA mem alloc/free 2018-07-10 22:25:02 -04:00
qla_devtbl.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qla_dfs.c scsi: qla2xxx: Add XCB counters to debugfs 2018-01-22 20:03:54 -05:00
qla_fw.h scsi: qla2xxx: Fix session cleanup for N2N 2018-01-03 23:41:06 -05:00
qla_gbl.h scsi: qla2xxx: Move GPSC and GFPNID out of session management 2018-05-08 00:46:11 -04:00
qla_gs.c scsi: qla2xxx: Fix unintialized List head crash 2018-07-19 22:02:33 -04:00
qla_init.c scsi: qla2xxx: Fix NULL pointer dereference for fcport search 2018-07-10 22:25:03 -04:00
qla_inline.h scsi: qla2xxx: Fix unintialized List head crash 2018-07-19 22:02:33 -04:00
qla_iocb.c scsi: qla2xxx: Fix race condition between iocb timeout and initialisation 2018-04-09 21:04:36 -04:00
qla_isr.c SCSI fixes on 20180613 2018-06-14 16:35:32 +09:00
qla_mbx.c scsi: qla2xxx: Fix crash on qla2x00_mailbox_command 2018-06-07 21:50:00 -04:00
qla_mid.c scsi: qla2xxx: Fix race condition between iocb timeout and initialisation 2018-04-09 21:04:36 -04:00
qla_mr.c scsi: qla2xxx: Fix race condition between iocb timeout and initialisation 2018-04-09 21:04:36 -04:00
qla_mr.h
qla_nvme.c scsi: qla2xxx: Cleanup code to improve FC-NVMe error handling 2018-03-21 18:38:54 -04:00
qla_nvme.h scsi: qla2xxx: Fix FC-NVMe IO abort during driver reset 2018-03-21 18:38:54 -04:00
qla_nx2.c scsi: qla2xxx: Fix function argument descriptions 2018-02-12 11:43:25 -05:00
qla_nx2.h scsi: qla2xxx: Remove unused symbols 2018-02-12 11:43:24 -05:00
qla_nx.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
qla_nx.h scsi: qla2xxx: remove writeq/readq function definitions 2017-06-12 20:48:08 -04:00
qla_os.c scsi: qla2xxx: Fix kernel crash due to late workqueue allocation 2018-07-10 22:25:02 -04:00
qla_settings.h
qla_sup.c scsi: qla2xxx: Fix function argument descriptions 2018-02-12 11:43:25 -05:00
qla_target.c scsi: qla2xxx: Spinlock recursion in qla_target 2018-06-18 21:02:52 -04:00
qla_target.h scsi: qla2xxx: Fix TMF and Multi-Queue config 2018-05-08 00:46:12 -04:00
qla_tmpl.c scsi: qla2xxx: Fix Firmware dump size for Extended login and Exchange Offload 2018-01-03 23:41:05 -05:00
qla_tmpl.h
qla_version.h scsi: qla2xxx: Update driver version to 10.00.00.07-k 2018-05-08 00:46:12 -04:00
tcm_qla2xxx.c treewide: Use array_size() in vzalloc() 2018-06-12 16:19:22 -07:00
tcm_qla2xxx.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00