Message ID | 20241008132402.26164-4-a.kovaleva@yadro.com |
---|---|
State | Superseded |
Headers | show |
Series | Fix bugs in qla2xxx driver | expand |
On 10/8/24 15:24, Anastasia Kovaleva wrote: > This BUG_ON() is triggered when there is no fc_port with a certain > loop ID in the scsi host vp_fcports list, but there is one in > lport_loopid_map. As these two data structures do not change > simultaneously and atomically, such a trap is invalid. > > Cc: stable@vger.kernel.org > Fixes: 726b85487067 ("qla2xxx: Add framework for async fabric discovery") > Signed-off-by: Anastasia Kovaleva <a.kovaleva@yadro.com> > Reviewed-by: Dmitry Bogdanov <d.bogdanov@yadro.com> > --- > drivers/scsi/qla2xxx/qla_target.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c > index bc7feef6ee79..9a5dbd00de01 100644 > --- a/drivers/scsi/qla2xxx/qla_target.c > +++ b/drivers/scsi/qla2xxx/qla_target.c > @@ -5190,15 +5190,7 @@ static int qlt_24xx_handle_els(struct scsi_qla_host *vha, > ql_dbg(ql_dbg_disc, vha, 0x20fc, > "%s: logo %llx res %d sess %p ", > __func__, wwn, res, sess); > - if (res == 0) { > - /* > - * cmd went upper layer, look for qlt_xmit_tm_rsp() > - * for LOGO_ACK & sess delete > - */ > - BUG_ON(!sess); > - res = 0; > - } else { > - /* cmd did not go to upper layer. */ > + if (res) { > if (sess) { > qlt_schedule_sess_for_deletion(sess); > res = 0; Reviewed-by: Hannes Reinecke <hare@suse.de> Cheers, Hannes
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index bc7feef6ee79..9a5dbd00de01 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -5190,15 +5190,7 @@ static int qlt_24xx_handle_els(struct scsi_qla_host *vha, ql_dbg(ql_dbg_disc, vha, 0x20fc, "%s: logo %llx res %d sess %p ", __func__, wwn, res, sess); - if (res == 0) { - /* - * cmd went upper layer, look for qlt_xmit_tm_rsp() - * for LOGO_ACK & sess delete - */ - BUG_ON(!sess); - res = 0; - } else { - /* cmd did not go to upper layer. */ + if (res) { if (sess) { qlt_schedule_sess_for_deletion(sess); res = 0;