]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/block/paride/pcd.c
block: autoconvert trivial BKL users to private mutex
[net-next-2.6.git] / drivers / block / paride / pcd.c
index 71acf4e53356f6ba6e4810848324e2ea268ae482..62cec6afd7adf560f6792c68949f71fcc8e6f9ea 100644 (file)
@@ -138,8 +138,10 @@ enum {D_PRT, D_PRO, D_UNI, D_MOD, D_SLV, D_DLY};
 #include <linux/cdrom.h>
 #include <linux/spinlock.h>
 #include <linux/blkdev.h>
+#include <linux/mutex.h>
 #include <asm/uaccess.h>
 
+static DEFINE_MUTEX(pcd_mutex);
 static DEFINE_SPINLOCK(pcd_lock);
 
 module_param(verbose, bool, 0644);
@@ -224,13 +226,21 @@ static char *pcd_buf;             /* buffer for request in progress */
 static int pcd_block_open(struct block_device *bdev, fmode_t mode)
 {
        struct pcd_unit *cd = bdev->bd_disk->private_data;
-       return cdrom_open(&cd->info, bdev, mode);
+       int ret;
+
+       mutex_lock(&pcd_mutex);
+       ret = cdrom_open(&cd->info, bdev, mode);
+       mutex_unlock(&pcd_mutex);
+
+       return ret;
 }
 
 static int pcd_block_release(struct gendisk *disk, fmode_t mode)
 {
        struct pcd_unit *cd = disk->private_data;
+       mutex_lock(&pcd_mutex);
        cdrom_release(&cd->info, mode);
+       mutex_unlock(&pcd_mutex);
        return 0;
 }
 
@@ -238,7 +248,13 @@ static int pcd_block_ioctl(struct block_device *bdev, fmode_t mode,
                                unsigned cmd, unsigned long arg)
 {
        struct pcd_unit *cd = bdev->bd_disk->private_data;
-       return cdrom_ioctl(&cd->info, bdev, mode, cmd, arg);
+       int ret;
+
+       mutex_lock(&pcd_mutex);
+       ret = cdrom_ioctl(&cd->info, bdev, mode, cmd, arg);
+       mutex_unlock(&pcd_mutex);
+
+       return ret;
 }
 
 static int pcd_block_media_changed(struct gendisk *disk)
@@ -251,7 +267,7 @@ static const struct block_device_operations pcd_bdops = {
        .owner          = THIS_MODULE,
        .open           = pcd_block_open,
        .release        = pcd_block_release,
-       .locked_ioctl   = pcd_block_ioctl,
+       .ioctl          = pcd_block_ioctl,
        .media_changed  = pcd_block_media_changed,
 };