This bug is as old as git.  We need to be calling spin_unlock_irqrestore()
instead of regular spin_unlock() here.

Signed-off-by: Dan Carpenter <[email protected]>

diff --git a/drivers/char/snsc.c b/drivers/char/snsc.c
index 10e5632..ec07f0e 100644
--- a/drivers/char/snsc.c
+++ b/drivers/char/snsc.c
@@ -285,7 +285,7 @@ scdrv_write(struct file *file, const char __user *buf,
                DECLARE_WAITQUEUE(wait, current);
 
                if (file->f_flags & O_NONBLOCK) {
-                       spin_unlock(&sd->sd_wlock);
+                       spin_unlock_irqrestore(&sd->sd_wlock, flags);
                        up(&sd->sd_wbs);
                        return -EAGAIN;
                }

Reply via email to