scsi: message: fusion: Remove in_interrupt() usage in mpt_config()
authorThomas Gleixner <tglx@linutronix.de>
Thu, 26 Nov 2020 13:29:51 +0000 (14:29 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 1 Dec 2020 05:03:53 +0000 (00:03 -0500)
in_interrupt() is referenced all over the place in these drivers. Most of
these references are comments which are outdated and wrong.

Aside of that in_interrupt() is deprecated as it does not provide what the
name suggests. It covers more than hard/soft interrupt servicing context
and is semantically ill defined.

>From reading the mpt_config() code and the history this is clearly a debug
mechanism and should probably be replaced by might_sleep() or completely
removed because such checks are already in the subsequent functions.

Remove the in_interrupt() references and replace the usage in mpt_config()
with might_sleep().

Link: https://lore.kernel.org/r/20201126132952.2287996-14-bigeasy@linutronix.de
Cc: Sathya Prakash <sathya.prakash@broadcom.com>
Cc: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Cc: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
Cc: MPT-FusionLinux.pdl@broadcom.com
Reviewed-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/message/fusion/mptbase.c
drivers/message/fusion/mptfc.c
drivers/message/fusion/mptscsih.c
drivers/message/fusion/mptspi.c

index 3078fac..549797d 100644 (file)
@@ -57,7 +57,7 @@
 #include <linux/kdev_t.h>
 #include <linux/blkdev.h>
 #include <linux/delay.h>
-#include <linux/interrupt.h>           /* needed for in_interrupt() proto */
+#include <linux/interrupt.h>
 #include <linux/dma-mapping.h>
 #include <linux/kthread.h>
 #include <scsi/scsi_host.h>
@@ -6335,7 +6335,6 @@ SendEventAck(MPT_ADAPTER *ioc, EventNotificationReply_t *evnp)
  *             Page header is updated.
  *
  *     Returns 0 for success
- *     -EPERM if not allowed due to ISR context
  *     -EAGAIN if no msg frames currently available
  *     -EFAULT for non-successful reply or no reply (timeout)
  */
@@ -6353,19 +6352,10 @@ mpt_config(MPT_ADAPTER *ioc, CONFIGPARMS *pCfg)
        u8               page_type = 0, extend_page;
        unsigned long    timeleft;
        unsigned long    flags;
-       int              in_isr;
        u8               issue_hard_reset = 0;
        u8               retry_count = 0;
 
-       /*      Prevent calling wait_event() (below), if caller happens
-        *      to be in ISR context, because that is fatal!
-        */
-       in_isr = in_interrupt();
-       if (in_isr) {
-               dcprintk(ioc, printk(MYIOC_s_WARN_FMT "Config request not allowed in ISR context!\n",
-                               ioc->name));
-               return -EPERM;
-    }
+       might_sleep();
 
        /* don't send a config page during diag reset */
        spin_lock_irqsave(&ioc->taskmgmt_lock, flags);
index f92b043..0484e9c 100644 (file)
@@ -50,7 +50,7 @@
 #include <linux/kdev_t.h>
 #include <linux/blkdev.h>
 #include <linux/delay.h>       /* for mdelay */
-#include <linux/interrupt.h>   /* needed for in_interrupt() proto */
+#include <linux/interrupt.h>
 #include <linux/reboot.h>      /* notifier code */
 #include <linux/workqueue.h>
 #include <linux/sort.h>
index a5ef9fa..f441f43 100644 (file)
@@ -52,7 +52,7 @@
 #include <linux/kdev_t.h>
 #include <linux/blkdev.h>
 #include <linux/delay.h>       /* for mdelay */
-#include <linux/interrupt.h>   /* needed for in_interrupt() proto */
+#include <linux/interrupt.h>
 #include <linux/reboot.h>      /* notifier code */
 #include <linux/workqueue.h>
 
index eabc4de..af0ce56 100644 (file)
@@ -52,7 +52,7 @@
 #include <linux/kdev_t.h>
 #include <linux/blkdev.h>
 #include <linux/delay.h>       /* for mdelay */
-#include <linux/interrupt.h>   /* needed for in_interrupt() proto */
+#include <linux/interrupt.h>
 #include <linux/reboot.h>      /* notifier code */
 #include <linux/workqueue.h>
 #include <linux/raid_class.h>