diff options
author | Saurav Kashyap <skashyap@marvell.com> | 2020-08-07 14:06:50 +0300 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2020-08-21 04:41:51 +0300 |
commit | a521bbc38ddc97d620103a543379380591ec912b (patch) | |
tree | f8fcd0acca10d62770c1cfcf98b11f3d04c84c58 /drivers/scsi/qedf | |
parent | 68bdb3db6ce3af6082395396efb301fb98ae87b9 (diff) | |
download | linux-a521bbc38ddc97d620103a543379380591ec912b.tar.xz |
scsi: qedf: Check for port type and role before processing an event
The rport lock gets initialized during offload. If a non-FCP or non-target
rport got logout then this rport will be uninitialized. KASAN was
complaining because of it.
=========
[ 14.384434] the code is fine but needs lockdep annotation.
[ 14.384482] turning off the locking correctness validator.
========
Link: https://lore.kernel.org/r/20200807110656.19965-2-jhasan@marvell.com
Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Javed Hasan <jhasan@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/qedf')
-rw-r--r-- | drivers/scsi/qedf/qedf_main.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c index 3f04f2c81366..39c4bdc89937 100644 --- a/drivers/scsi/qedf/qedf_main.c +++ b/drivers/scsi/qedf/qedf_main.c @@ -1558,6 +1558,17 @@ static void qedf_rport_event_handler(struct fc_lport *lport, if (port_id == FC_FID_DIR_SERV) break; + if (rdata->spp_type != FC_TYPE_FCP) { + QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_DISC, + "No action since spp type isn't FCP\n"); + break; + } + if (!(rdata->ids.roles & FC_RPORT_ROLE_FCP_TARGET)) { + QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_DISC, + "Not FCP target so no action\n"); + break; + } + if (!rport) { QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_DISC, "port_id=%x - rport notcreated Yet!!\n", port_id); |