Merge tag 'for-linus-5.14-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / drivers / s390 / scsi / zfcp_erp.c
index 59e662d..78d52a4 100644 (file)
@@ -1607,7 +1607,6 @@ check_target:
 static int zfcp_erp_thread(void *data)
 {
        struct zfcp_adapter *adapter = (struct zfcp_adapter *) data;
-       struct list_head *next;
        struct zfcp_erp_action *act;
        unsigned long flags;
 
@@ -1620,12 +1619,11 @@ static int zfcp_erp_thread(void *data)
                        break;
 
                write_lock_irqsave(&adapter->erp_lock, flags);
-               next = adapter->erp_ready_head.next;
+               act = list_first_entry_or_null(&adapter->erp_ready_head,
+                                              struct zfcp_erp_action, list);
                write_unlock_irqrestore(&adapter->erp_lock, flags);
 
-               if (next != &adapter->erp_ready_head) {
-                       act = list_entry(next, struct zfcp_erp_action, list);
-
+               if (act) {
                        /* there is more to come after dismission, no notify */
                        if (zfcp_erp_strategy(act) != ZFCP_ERP_DISMISSED)
                                zfcp_erp_wakeup(adapter);