aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-tape.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-tape.c')
-rw-r--r--drivers/ide/ide-tape.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index 23d1d1c5587c..7ecb1ade8874 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -32,11 +32,9 @@
32#include <linux/errno.h> 32#include <linux/errno.h>
33#include <linux/genhd.h> 33#include <linux/genhd.h>
34#include <linux/seq_file.h> 34#include <linux/seq_file.h>
35#include <linux/smp_lock.h>
36#include <linux/slab.h> 35#include <linux/slab.h>
37#include <linux/pci.h> 36#include <linux/pci.h>
38#include <linux/ide.h> 37#include <linux/ide.h>
39#include <linux/smp_lock.h>
40#include <linux/completion.h> 38#include <linux/completion.h>
41#include <linux/bitops.h> 39#include <linux/bitops.h>
42#include <linux/mutex.h> 40#include <linux/mutex.h>
@@ -220,6 +218,7 @@ typedef struct ide_tape_obj {
220 char write_prot; 218 char write_prot;
221} idetape_tape_t; 219} idetape_tape_t;
222 220
221static DEFINE_MUTEX(ide_tape_mutex);
223static DEFINE_MUTEX(idetape_ref_mutex); 222static DEFINE_MUTEX(idetape_ref_mutex);
224 223
225static DEFINE_MUTEX(idetape_chrdev_mutex); 224static DEFINE_MUTEX(idetape_chrdev_mutex);
@@ -1426,9 +1425,9 @@ static long idetape_chrdev_ioctl(struct file *file,
1426 unsigned int cmd, unsigned long arg) 1425 unsigned int cmd, unsigned long arg)
1427{ 1426{
1428 long ret; 1427 long ret;
1429 lock_kernel(); 1428 mutex_lock(&ide_tape_mutex);
1430 ret = do_idetape_chrdev_ioctl(file, cmd, arg); 1429 ret = do_idetape_chrdev_ioctl(file, cmd, arg);
1431 unlock_kernel(); 1430 mutex_unlock(&ide_tape_mutex);
1432 return ret; 1431 return ret;
1433} 1432}
1434 1433
@@ -1910,9 +1909,9 @@ static int idetape_open(struct block_device *bdev, fmode_t mode)
1910{ 1909{
1911 struct ide_tape_obj *tape; 1910 struct ide_tape_obj *tape;
1912 1911
1913 lock_kernel(); 1912 mutex_lock(&ide_tape_mutex);
1914 tape = ide_tape_get(bdev->bd_disk, false, 0); 1913 tape = ide_tape_get(bdev->bd_disk, false, 0);
1915 unlock_kernel(); 1914 mutex_unlock(&ide_tape_mutex);
1916 1915
1917 if (!tape) 1916 if (!tape)
1918 return -ENXIO; 1917 return -ENXIO;
@@ -1924,9 +1923,9 @@ static int idetape_release(struct gendisk *disk, fmode_t mode)
1924{ 1923{
1925 struct ide_tape_obj *tape = ide_drv_g(disk, ide_tape_obj); 1924 struct ide_tape_obj *tape = ide_drv_g(disk, ide_tape_obj);
1926 1925
1927 lock_kernel(); 1926 mutex_lock(&ide_tape_mutex);
1928 ide_tape_put(tape); 1927 ide_tape_put(tape);
1929 unlock_kernel(); 1928 mutex_unlock(&ide_tape_mutex);
1930 1929
1931 return 0; 1930 return 0;
1932} 1931}
@@ -1938,11 +1937,11 @@ static int idetape_ioctl(struct block_device *bdev, fmode_t mode,
1938 ide_drive_t *drive = tape->drive; 1937 ide_drive_t *drive = tape->drive;
1939 int err; 1938 int err;
1940 1939
1941 lock_kernel(); 1940 mutex_lock(&ide_tape_mutex);
1942 err = generic_ide_ioctl(drive, bdev, cmd, arg); 1941 err = generic_ide_ioctl(drive, bdev, cmd, arg);
1943 if (err == -EINVAL) 1942 if (err == -EINVAL)
1944 err = idetape_blkdev_ioctl(drive, cmd, arg); 1943 err = idetape_blkdev_ioctl(drive, cmd, arg);
1945 unlock_kernel(); 1944 mutex_unlock(&ide_tape_mutex);
1946 1945
1947 return err; 1946 return err;
1948} 1947}