During rmmod, all ndlp objects are cleaned up and marked with the
NLP_DROPPED flag indicating that an ndlp object is currently being
released.  Thus, if an RSCN is received during driver unload, then
walking the fc_nodes list to process the RSCN is unnecessary because the
ndlp objects are very shortly going to be released.
In the lpfc_rscn_recovery_check routine, early return if the driver is in
the middle of unloading by checking for the FC_UNLOADING flag.
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20250618192138.124116-5-justintee8345@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
 
        /* Move all affected nodes by pending RSCNs to NPR state. */
        list_for_each_entry_safe(ndlp, n, &vport->fc_nodes, nlp_listp) {
+               if (test_bit(FC_UNLOADING, &vport->load_flag)) {
+                       lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
+                                        "1000 %s Unloading set\n",
+                                        __func__);
+                       return 0;
+               }
+
                if ((ndlp->nlp_state == NLP_STE_UNUSED_NODE) ||
                    !lpfc_rscn_payload_check(vport, ndlp->nlp_DID))
                        continue;