aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/osst.c
diff options
context:
space:
mode:
authorJonathan Corbet <corbet@lwn.net>2008-05-15 14:23:19 -0400
committerJonathan Corbet <corbet@lwn.net>2008-06-20 16:05:49 -0400
commit647d87bd1b9e7ff24f89b7d4e38c75d756018caa (patch)
tree8dafda1aeb310843b5f7c087ae7b3c706138796a /drivers/scsi/osst.c
parenteb09d3d4ee09b25876db549b6d5221610216e105 (diff)
osst: cdev lock_kernel() pushdown.
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'drivers/scsi/osst.c')
-rw-r--r--drivers/scsi/osst.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/scsi/osst.c b/drivers/scsi/osst.c
index 31f7aec44d9..24ad89a649c 100644
--- a/drivers/scsi/osst.c
+++ b/drivers/scsi/osst.c
@@ -50,6 +50,7 @@ static const char * osst_version = "0.99.4";
50#include <linux/moduleparam.h> 50#include <linux/moduleparam.h>
51#include <linux/delay.h> 51#include <linux/delay.h>
52#include <linux/jiffies.h> 52#include <linux/jiffies.h>
53#include <linux/smp_lock.h>
53#include <asm/uaccess.h> 54#include <asm/uaccess.h>
54#include <asm/dma.h> 55#include <asm/dma.h>
55#include <asm/system.h> 56#include <asm/system.h>
@@ -4359,7 +4360,7 @@ os_bypass:
4359 4360
4360 4361
4361/* Open the device */ 4362/* Open the device */
4362static int os_scsi_tape_open(struct inode * inode, struct file * filp) 4363static int __os_scsi_tape_open(struct inode * inode, struct file * filp)
4363{ 4364{
4364 unsigned short flags; 4365 unsigned short flags;
4365 int i, b_size, new_session = 0, retval = 0; 4366 int i, b_size, new_session = 0, retval = 0;
@@ -4725,6 +4726,18 @@ err_out:
4725 return retval; 4726 return retval;
4726} 4727}
4727 4728
4729/* BKL pushdown: spaghetti avoidance wrapper */
4730static int os_scsi_tape_open(struct inode * inode, struct file * filp)
4731{
4732 int ret;
4733
4734 lock_kernel();
4735 ret = __os_scsi_tape_open(inode, filp);
4736 unlock_kernel();
4737 return ret;
4738}
4739
4740
4728 4741
4729/* Flush the tape buffer before close */ 4742/* Flush the tape buffer before close */
4730static int os_scsi_tape_flush(struct file * filp, fl_owner_t id) 4743static int os_scsi_tape_flush(struct file * filp, fl_owner_t id)