On Tue, 15 Dec 2020 11:47:31 -0800, Javed Hasan wrote: > Issue :- race condition getting hit between the response handler > get called because of the exchange_mgr_reset() which clear out all > the active XID and the response we get via interrupt as the same time > > Below are the sequence of events occurring in case of > "issue/race condition" :- > rport ba0200: Port timeout, state PLOGI > rport ba0200: Port entered PLOGI state from PLOGI state > xid 1052: Exchange timer armed : 20000 msecs xid timer armed here > rport ba0200: Received LOGO request while in state PLOGI > rport ba0200: Delete port > rport ba0200: work event 3 > rport ba0200: lld callback ev 3 > bnx2fc: rport_event_hdlr: event = 3, port_id = 0xba0200 > bnx2fc: ba0200 - rport not created Yet!! > /* Here we reset any outstanding exchanges before > freeing rport using the exch_mgr_reset() */ > xid 1052: Exchange timer canceled > /*Here we got two response for one xid*/ > xid 1052: invoking resp(), esb 20000000 state 3 > xid 1052: invoking resp(), esb 20000000 state 3 > xid 1052: fc_rport_plogi_resp() : ep->resp_active 2 > xid 1052: fc_rport_plogi_resp() : ep->resp_active 2 Applied to 5.11/scsi-fixes, thanks! [1/1] scsi: libfc: Avoid invoking response handler twice if ep is already completed. https://git.kernel.org/mkp/scsi/c/b2b0f16fa65e -- Martin K. Petersen Oracle Linux Engineering