Merge branch 'for-2.6.37/drivers' of git://git.kernel.dk/linux-2.6-block
[pandora-kernel.git] / drivers / block / ataflop.c
index 0f4eec4..4e4cc6c 100644 (file)
@@ -67,7 +67,7 @@
 #include <linux/delay.h>
 #include <linux/init.h>
 #include <linux/blkdev.h>
-#include <linux/smp_lock.h>
+#include <linux/mutex.h>
 
 #include <asm/atafd.h>
 #include <asm/atafdreg.h>
@@ -79,6 +79,7 @@
 
 #undef DEBUG
 
+static DEFINE_MUTEX(ataflop_mutex);
 static struct request *fd_request;
 static int fdc_queue;
 
@@ -1694,9 +1695,9 @@ static int fd_ioctl(struct block_device *bdev, fmode_t mode,
 {
        int ret;
 
-       lock_kernel();
+       mutex_lock(&ataflop_mutex);
        ret = fd_locked_ioctl(bdev, mode, cmd, arg);
-       unlock_kernel();
+       mutex_unlock(&ataflop_mutex);
 
        return ret;
 }
@@ -1877,9 +1878,9 @@ static int floppy_unlocked_open(struct block_device *bdev, fmode_t mode)
 {
        int ret;
 
-       lock_kernel();
+       mutex_lock(&ataflop_mutex);
        ret = floppy_open(bdev, mode);
-       unlock_kernel();
+       mutex_unlock(&ataflop_mutex);
 
        return ret;
 }
@@ -1887,14 +1888,14 @@ static int floppy_unlocked_open(struct block_device *bdev, fmode_t mode)
 static int floppy_release(struct gendisk *disk, fmode_t mode)
 {
        struct atari_floppy_struct *p = disk->private_data;
-       lock_kernel();
+       mutex_lock(&ataflop_mutex);
        if (p->ref < 0)
                p->ref = 0;
        else if (!p->ref--) {
                printk(KERN_ERR "floppy_release with fd_ref == 0");
                p->ref = 0;
        }
-       unlock_kernel();
+       mutex_unlock(&ataflop_mutex);
        return 0;
 }