block: autoconvert trivial BKL users to private mutex

The block device drivers have all gained new lock_kernel
calls from a recent pushdown, and some of the drivers
were already using the BKL before.

This turns the BKL into a set of per-driver mutexes.
Still need to check whether this is safe to do.

file=$1
name=$2
if grep -q lock_kernel ${file} ; then
if grep -q 'include.*linux.mutex.h' ${file} ; then
sed -i '/include.*<linux\/smp_lock.h>/d' ${file}
else
sed -i 's/include.*<linux\/smp_lock.h>.*$/include <linux\/mutex.h>/g' ${file}
fi
sed -i ${file} \
-e "/^#include.*linux.mutex.h/,$ {
1,/^\(static\|int\|long\)/ {
/^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);

} }" \
-e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
-e '/[ ]*cycle_kernel_lock();/d'
else
sed -i -e '/include.*\<smp_lock.h\>/d' ${file} \
-e '/cycle_kernel_lock()/d'
fi

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+277 -250
-3
block/bsg.c
··· 20 20 #include <linux/uio.h> 21 21 #include <linux/idr.h> 22 22 #include <linux/bsg.h> 23 - #include <linux/smp_lock.h> 24 23 #include <linux/slab.h> 25 24 26 25 #include <scsi/scsi.h> ··· 842 843 { 843 844 struct bsg_device *bd; 844 845 845 - lock_kernel(); 846 846 bd = bsg_get_device(inode, file); 847 - unlock_kernel(); 848 847 849 848 if (IS_ERR(bd)) 850 849 return PTR_ERR(bd);
+6 -5
drivers/block/DAC960.c
··· 36 36 #include <linux/ioport.h> 37 37 #include <linux/mm.h> 38 38 #include <linux/slab.h> 39 - #include <linux/smp_lock.h> 39 + #include <linux/mutex.h> 40 40 #include <linux/proc_fs.h> 41 41 #include <linux/seq_file.h> 42 42 #include <linux/reboot.h> ··· 54 54 #define DAC960_GAM_MINOR 252 55 55 56 56 57 + static DEFINE_MUTEX(DAC960_mutex); 57 58 static DAC960_Controller_T *DAC960_Controllers[DAC960_MaxControllers]; 58 59 static int DAC960_ControllerCount; 59 60 static struct proc_dir_entry *DAC960_ProcDirectoryEntry; ··· 82 81 int drive_nr = (long)disk->private_data; 83 82 int ret = -ENXIO; 84 83 85 - lock_kernel(); 84 + mutex_lock(&DAC960_mutex); 86 85 if (p->FirmwareType == DAC960_V1_Controller) { 87 86 if (p->V1.LogicalDriveInformation[drive_nr]. 88 87 LogicalDriveState == DAC960_V1_LogicalDrive_Offline) ··· 100 99 goto out; 101 100 ret = 0; 102 101 out: 103 - unlock_kernel(); 102 + mutex_unlock(&DAC960_mutex); 104 103 return ret; 105 104 } 106 105 ··· 6626 6625 long ErrorCode = 0; 6627 6626 if (!capable(CAP_SYS_ADMIN)) return -EACCES; 6628 6627 6629 - lock_kernel(); 6628 + mutex_lock(&DAC960_mutex); 6630 6629 switch (Request) 6631 6630 { 6632 6631 case DAC960_IOCTL_GET_CONTROLLER_COUNT: ··· 7057 7056 default: 7058 7057 ErrorCode = -ENOTTY; 7059 7058 } 7060 - unlock_kernel(); 7059 + mutex_unlock(&DAC960_mutex); 7061 7060 return ErrorCode; 7062 7061 } 7063 7062
+10 -9
drivers/block/amiflop.c
··· 60 60 #include <linux/hdreg.h> 61 61 #include <linux/delay.h> 62 62 #include <linux/init.h> 63 - #include <linux/smp_lock.h> 63 + #include <linux/mutex.h> 64 64 #include <linux/amifdreg.h> 65 65 #include <linux/amifd.h> 66 66 #include <linux/buffer_head.h> ··· 109 109 #define FD_HD_3 0x55555555 /* high-density 3.5" (1760K) drive */ 110 110 #define FD_DD_5 0xaaaaaaaa /* double-density 5.25" (440K) drive */ 111 111 112 + static DEFINE_MUTEX(amiflop_mutex); 112 113 static unsigned long int fd_def_df0 = FD_DD_3; /* default for df0 if it doesn't identify */ 113 114 114 115 module_param(fd_def_df0, ulong, 0); ··· 1507 1506 { 1508 1507 int ret; 1509 1508 1510 - lock_kernel(); 1509 + mutex_lock(&amiflop_mutex); 1511 1510 ret = fd_locked_ioctl(bdev, mode, cmd, param); 1512 - unlock_kernel(); 1511 + mutex_unlock(&amiflop_mutex); 1513 1512 1514 1513 return ret; 1515 1514 } ··· 1556 1555 int old_dev; 1557 1556 unsigned long flags; 1558 1557 1559 - lock_kernel(); 1558 + mutex_lock(&amiflop_mutex); 1560 1559 old_dev = fd_device[drive]; 1561 1560 1562 1561 if (fd_ref[drive] && old_dev != system) { 1563 - unlock_kernel(); 1562 + mutex_unlock(&amiflop_mutex); 1564 1563 return -EBUSY; 1565 1564 } 1566 1565 ··· 1576 1575 rel_fdc(); 1577 1576 1578 1577 if (wrprot) { 1579 - unlock_kernel(); 1578 + mutex_unlock(&amiflop_mutex); 1580 1579 return -EROFS; 1581 1580 } 1582 1581 } ··· 1595 1594 printk(KERN_INFO "fd%d: accessing %s-disk with %s-layout\n",drive, 1596 1595 unit[drive].type->name, data_types[system].name); 1597 1596 1598 - unlock_kernel(); 1597 + mutex_unlock(&amiflop_mutex); 1599 1598 return 0; 1600 1599 } 1601 1600 ··· 1604 1603 struct amiga_floppy_struct *p = disk->private_data; 1605 1604 int drive = p - unit; 1606 1605 1607 - lock_kernel(); 1606 + mutex_lock(&amiflop_mutex); 1608 1607 if (unit[drive].dirty == 1) { 1609 1608 del_timer (flush_track_timer + drive); 1610 1609 non_int_flush_track (drive); ··· 1618 1617 /* the mod_use counter is handled this way */ 1619 1618 floppy_off (drive | 0x40000000); 1620 1619 #endif 1621 - unlock_kernel(); 1620 + mutex_unlock(&amiflop_mutex); 1622 1621 return 0; 1623 1622 } 1624 1623
+5 -4
drivers/block/aoe/aoeblk.c
··· 12 12 #include <linux/slab.h> 13 13 #include <linux/genhd.h> 14 14 #include <linux/netdevice.h> 15 - #include <linux/smp_lock.h> 15 + #include <linux/mutex.h> 16 16 #include "aoe.h" 17 17 18 + static DEFINE_MUTEX(aoeblk_mutex); 18 19 static struct kmem_cache *buf_pool_cache; 19 20 20 21 static ssize_t aoedisk_show_state(struct device *dev, ··· 126 125 struct aoedev *d = bdev->bd_disk->private_data; 127 126 ulong flags; 128 127 129 - lock_kernel(); 128 + mutex_lock(&aoeblk_mutex); 130 129 spin_lock_irqsave(&d->lock, flags); 131 130 if (d->flags & DEVFL_UP) { 132 131 d->nopen++; 133 132 spin_unlock_irqrestore(&d->lock, flags); 134 - unlock_kernel(); 133 + mutex_unlock(&aoeblk_mutex); 135 134 return 0; 136 135 } 137 136 spin_unlock_irqrestore(&d->lock, flags); 138 - unlock_kernel(); 137 + mutex_unlock(&aoeblk_mutex); 139 138 return -ENODEV; 140 139 } 141 140
+5 -4
drivers/block/aoe/aoechr.c
··· 9 9 #include <linux/completion.h> 10 10 #include <linux/delay.h> 11 11 #include <linux/slab.h> 12 - #include <linux/smp_lock.h> 12 + #include <linux/mutex.h> 13 13 #include <linux/skbuff.h> 14 14 #include "aoe.h" 15 15 ··· 37 37 char *msg; 38 38 }; 39 39 40 + static DEFINE_MUTEX(aoechr_mutex); 40 41 static struct ErrMsg emsgs[NMSG]; 41 42 static int emsgs_head_idx, emsgs_tail_idx; 42 43 static struct completion emsgs_comp; ··· 184 183 { 185 184 int n, i; 186 185 187 - lock_kernel(); 186 + mutex_lock(&aoechr_mutex); 188 187 n = iminor(inode); 189 188 filp->private_data = (void *) (unsigned long) n; 190 189 191 190 for (i = 0; i < ARRAY_SIZE(chardevs); ++i) 192 191 if (chardevs[i].minor == n) { 193 - unlock_kernel(); 192 + mutex_unlock(&aoechr_mutex); 194 193 return 0; 195 194 } 196 - unlock_kernel(); 195 + mutex_unlock(&aoechr_mutex); 197 196 return -EINVAL; 198 197 } 199 198
+8 -7
drivers/block/ataflop.c
··· 67 67 #include <linux/delay.h> 68 68 #include <linux/init.h> 69 69 #include <linux/blkdev.h> 70 - #include <linux/smp_lock.h> 70 + #include <linux/mutex.h> 71 71 72 72 #include <asm/atafd.h> 73 73 #include <asm/atafdreg.h> ··· 79 79 80 80 #undef DEBUG 81 81 82 + static DEFINE_MUTEX(ataflop_mutex); 82 83 static struct request_queue *floppy_queue; 83 84 static struct request *fd_request; 84 85 ··· 1672 1671 { 1673 1672 int ret; 1674 1673 1675 - lock_kernel(); 1674 + mutex_lock(&ataflop_mutex); 1676 1675 ret = fd_locked_ioctl(bdev, mode, cmd, arg); 1677 - unlock_kernel(); 1676 + mutex_unlock(&ataflop_mutex); 1678 1677 1679 1678 return ret; 1680 1679 } ··· 1855 1854 { 1856 1855 int ret; 1857 1856 1858 - lock_kernel(); 1857 + mutex_lock(&ataflop_mutex); 1859 1858 ret = floppy_open(bdev, mode); 1860 - unlock_kernel(); 1859 + mutex_unlock(&ataflop_mutex); 1861 1860 1862 1861 return ret; 1863 1862 } ··· 1865 1864 static int floppy_release(struct gendisk *disk, fmode_t mode) 1866 1865 { 1867 1866 struct atari_floppy_struct *p = disk->private_data; 1868 - lock_kernel(); 1867 + mutex_lock(&ataflop_mutex); 1869 1868 if (p->ref < 0) 1870 1869 p->ref = 0; 1871 1870 else if (!p->ref--) { 1872 1871 printk(KERN_ERR "floppy_release with fd_ref == 0"); 1873 1872 p->ref = 0; 1874 1873 } 1875 - unlock_kernel(); 1874 + mutex_unlock(&ataflop_mutex); 1876 1875 return 0; 1877 1876 } 1878 1877
+4 -3
drivers/block/brd.c
··· 15 15 #include <linux/blkdev.h> 16 16 #include <linux/bio.h> 17 17 #include <linux/highmem.h> 18 - #include <linux/smp_lock.h> 18 + #include <linux/mutex.h> 19 19 #include <linux/radix-tree.h> 20 20 #include <linux/buffer_head.h> /* invalidate_bh_lrus() */ 21 21 #include <linux/slab.h> ··· 55 55 /* 56 56 * Look up and return a brd's page for a given sector. 57 57 */ 58 + static DEFINE_MUTEX(brd_mutex); 58 59 static struct page *brd_lookup_page(struct brd_device *brd, sector_t sector) 59 60 { 60 61 pgoff_t idx; ··· 403 402 * ram device BLKFLSBUF has special semantics, we want to actually 404 403 * release and destroy the ramdisk data. 405 404 */ 406 - lock_kernel(); 405 + mutex_lock(&brd_mutex); 407 406 mutex_lock(&bdev->bd_mutex); 408 407 error = -EBUSY; 409 408 if (bdev->bd_openers <= 1) { ··· 420 419 error = 0; 421 420 } 422 421 mutex_unlock(&bdev->bd_mutex); 423 - unlock_kernel(); 422 + mutex_unlock(&brd_mutex); 424 423 425 424 return error; 426 425 }
+7 -7
drivers/block/cciss.c
··· 26 26 #include <linux/pci.h> 27 27 #include <linux/kernel.h> 28 28 #include <linux/slab.h> 29 - #include <linux/smp_lock.h> 30 29 #include <linux/delay.h> 31 30 #include <linux/major.h> 32 31 #include <linux/fs.h> ··· 65 66 MODULE_VERSION("3.6.26"); 66 67 MODULE_LICENSE("GPL"); 67 68 69 + static DEFINE_MUTEX(cciss_mutex); 68 70 static int cciss_allow_hpsa; 69 71 module_param(cciss_allow_hpsa, int, S_IRUGO|S_IWUSR); 70 72 MODULE_PARM_DESC(cciss_allow_hpsa, ··· 1059 1059 { 1060 1060 int ret; 1061 1061 1062 - lock_kernel(); 1062 + mutex_lock(&cciss_mutex); 1063 1063 ret = cciss_open(bdev, mode); 1064 - unlock_kernel(); 1064 + mutex_unlock(&cciss_mutex); 1065 1065 1066 1066 return ret; 1067 1067 } ··· 1074 1074 ctlr_info_t *h; 1075 1075 drive_info_struct *drv; 1076 1076 1077 - lock_kernel(); 1077 + mutex_lock(&cciss_mutex); 1078 1078 h = get_host(disk); 1079 1079 drv = get_drv(disk); 1080 1080 dev_dbg(&h->pdev->dev, "cciss_release %s\n", disk->disk_name); 1081 1081 drv->usage_count--; 1082 1082 h->usage_count--; 1083 - unlock_kernel(); 1083 + mutex_unlock(&cciss_mutex); 1084 1084 return 0; 1085 1085 } 1086 1086 ··· 1088 1088 unsigned cmd, unsigned long arg) 1089 1089 { 1090 1090 int ret; 1091 - lock_kernel(); 1091 + mutex_lock(&cciss_mutex); 1092 1092 ret = cciss_ioctl(bdev, mode, cmd, arg); 1093 - unlock_kernel(); 1093 + mutex_unlock(&cciss_mutex); 1094 1094 return ret; 1095 1095 } 1096 1096
+8 -7
drivers/block/cpqarray.c
··· 35 35 #include <linux/seq_file.h> 36 36 #include <linux/init.h> 37 37 #include <linux/hdreg.h> 38 - #include <linux/smp_lock.h> 38 + #include <linux/mutex.h> 39 39 #include <linux/spinlock.h> 40 40 #include <linux/blkdev.h> 41 41 #include <linux/genhd.h> ··· 68 68 69 69 #define CPQARRAY_DMA_MASK 0xFFFFFFFF /* 32 bit DMA */ 70 70 71 + static DEFINE_MUTEX(cpqarray_mutex); 71 72 static int nr_ctlr; 72 73 static ctlr_info_t *hba[MAX_CTLR]; 73 74 ··· 846 845 { 847 846 int ret; 848 847 849 - lock_kernel(); 848 + mutex_lock(&cpqarray_mutex); 850 849 ret = ida_open(bdev, mode); 851 - unlock_kernel(); 850 + mutex_unlock(&cpqarray_mutex); 852 851 853 852 return ret; 854 853 } ··· 860 859 { 861 860 ctlr_info_t *host; 862 861 863 - lock_kernel(); 862 + mutex_lock(&cpqarray_mutex); 864 863 host = get_host(disk); 865 864 host->usage_count--; 866 - unlock_kernel(); 865 + mutex_unlock(&cpqarray_mutex); 867 866 868 867 return 0; 869 868 } ··· 1218 1217 { 1219 1218 int ret; 1220 1219 1221 - lock_kernel(); 1220 + mutex_lock(&cpqarray_mutex); 1222 1221 ret = ida_locked_ioctl(bdev, mode, cmd, param); 1223 - unlock_kernel(); 1222 + mutex_unlock(&cpqarray_mutex); 1224 1223 1225 1224 return ret; 1226 1225 }
+6 -5
drivers/block/drbd/drbd_main.c
··· 32 32 #include <asm/types.h> 33 33 #include <net/sock.h> 34 34 #include <linux/ctype.h> 35 - #include <linux/smp_lock.h> 35 + #include <linux/mutex.h> 36 36 #include <linux/fs.h> 37 37 #include <linux/file.h> 38 38 #include <linux/proc_fs.h> ··· 64 64 struct completion *done; 65 65 }; 66 66 67 + static DEFINE_MUTEX(drbd_main_mutex); 67 68 int drbdd_init(struct drbd_thread *); 68 69 int drbd_worker(struct drbd_thread *); 69 70 int drbd_asender(struct drbd_thread *); ··· 2537 2536 unsigned long flags; 2538 2537 int rv = 0; 2539 2538 2540 - lock_kernel(); 2539 + mutex_lock(&drbd_main_mutex); 2541 2540 spin_lock_irqsave(&mdev->req_lock, flags); 2542 2541 /* to have a stable mdev->state.role 2543 2542 * and no race with updating open_cnt */ ··· 2552 2551 if (!rv) 2553 2552 mdev->open_cnt++; 2554 2553 spin_unlock_irqrestore(&mdev->req_lock, flags); 2555 - unlock_kernel(); 2554 + mutex_unlock(&drbd_main_mutex); 2556 2555 2557 2556 return rv; 2558 2557 } ··· 2560 2559 static int drbd_release(struct gendisk *gd, fmode_t mode) 2561 2560 { 2562 2561 struct drbd_conf *mdev = gd->private_data; 2563 - lock_kernel(); 2562 + mutex_lock(&drbd_main_mutex); 2564 2563 mdev->open_cnt--; 2565 - unlock_kernel(); 2564 + mutex_unlock(&drbd_main_mutex); 2566 2565 return 0; 2567 2566 } 2568 2567
+8 -8
drivers/block/floppy.c
··· 178 178 #include <linux/slab.h> 179 179 #include <linux/mm.h> 180 180 #include <linux/bio.h> 181 - #include <linux/smp_lock.h> 182 181 #include <linux/string.h> 183 182 #include <linux/jiffies.h> 184 183 #include <linux/fcntl.h> ··· 198 199 * It's been recommended that take about 1/4 of the default speed 199 200 * in some more extreme cases. 200 201 */ 202 + static DEFINE_MUTEX(floppy_mutex); 201 203 static int slow_floppy; 202 204 203 205 #include <asm/dma.h> ··· 3553 3553 { 3554 3554 int ret; 3555 3555 3556 - lock_kernel(); 3556 + mutex_lock(&floppy_mutex); 3557 3557 ret = fd_locked_ioctl(bdev, mode, cmd, param); 3558 - unlock_kernel(); 3558 + mutex_unlock(&floppy_mutex); 3559 3559 3560 3560 return ret; 3561 3561 } ··· 3616 3616 { 3617 3617 int drive = (long)disk->private_data; 3618 3618 3619 - lock_kernel(); 3619 + mutex_lock(&floppy_mutex); 3620 3620 mutex_lock(&open_lock); 3621 3621 if (UDRS->fd_ref < 0) 3622 3622 UDRS->fd_ref = 0; ··· 3627 3627 if (!UDRS->fd_ref) 3628 3628 opened_bdev[drive] = NULL; 3629 3629 mutex_unlock(&open_lock); 3630 - unlock_kernel(); 3630 + mutex_unlock(&floppy_mutex); 3631 3631 3632 3632 return 0; 3633 3633 } ··· 3645 3645 int res = -EBUSY; 3646 3646 char *tmp; 3647 3647 3648 - lock_kernel(); 3648 + mutex_lock(&floppy_mutex); 3649 3649 mutex_lock(&open_lock); 3650 3650 old_dev = UDRS->fd_device; 3651 3651 if (opened_bdev[drive] && opened_bdev[drive] != bdev) ··· 3722 3722 goto out; 3723 3723 } 3724 3724 mutex_unlock(&open_lock); 3725 - unlock_kernel(); 3725 + mutex_unlock(&floppy_mutex); 3726 3726 return 0; 3727 3727 out: 3728 3728 if (UDRS->fd_ref < 0) ··· 3733 3733 opened_bdev[drive] = NULL; 3734 3734 out2: 3735 3735 mutex_unlock(&open_lock); 3736 - unlock_kernel(); 3736 + mutex_unlock(&floppy_mutex); 3737 3737 return res; 3738 3738 } 3739 3739
+6 -5
drivers/block/loop.c
··· 67 67 #include <linux/compat.h> 68 68 #include <linux/suspend.h> 69 69 #include <linux/freezer.h> 70 - #include <linux/smp_lock.h> 70 + #include <linux/mutex.h> 71 71 #include <linux/writeback.h> 72 72 #include <linux/buffer_head.h> /* for invalidate_bdev() */ 73 73 #include <linux/completion.h> ··· 77 77 78 78 #include <asm/uaccess.h> 79 79 80 + static DEFINE_MUTEX(loop_mutex); 80 81 static LIST_HEAD(loop_devices); 81 82 static DEFINE_MUTEX(loop_devices_mutex); 82 83 ··· 1410 1409 { 1411 1410 struct loop_device *lo = bdev->bd_disk->private_data; 1412 1411 1413 - lock_kernel(); 1412 + mutex_lock(&loop_mutex); 1414 1413 mutex_lock(&lo->lo_ctl_mutex); 1415 1414 lo->lo_refcnt++; 1416 1415 mutex_unlock(&lo->lo_ctl_mutex); 1417 - unlock_kernel(); 1416 + mutex_unlock(&loop_mutex); 1418 1417 1419 1418 return 0; 1420 1419 } ··· 1424 1423 struct loop_device *lo = disk->private_data; 1425 1424 int err; 1426 1425 1427 - lock_kernel(); 1426 + mutex_lock(&loop_mutex); 1428 1427 mutex_lock(&lo->lo_ctl_mutex); 1429 1428 1430 1429 if (--lo->lo_refcnt) ··· 1449 1448 out: 1450 1449 mutex_unlock(&lo->lo_ctl_mutex); 1451 1450 out_unlocked: 1452 - lock_kernel(); 1451 + mutex_unlock(&loop_mutex); 1453 1452 return 0; 1454 1453 } 1455 1454
+4 -3
drivers/block/nbd.c
··· 24 24 #include <linux/errno.h> 25 25 #include <linux/file.h> 26 26 #include <linux/ioctl.h> 27 - #include <linux/smp_lock.h> 27 + #include <linux/mutex.h> 28 28 #include <linux/compiler.h> 29 29 #include <linux/err.h> 30 30 #include <linux/kernel.h> ··· 53 53 #define DBG_BLKDEV 0x0100 54 54 #define DBG_RX 0x0200 55 55 #define DBG_TX 0x0400 56 + static DEFINE_MUTEX(nbd_mutex); 56 57 static unsigned int debugflags; 57 58 #endif /* NDEBUG */ 58 59 ··· 718 717 dprintk(DBG_IOCTL, "%s: nbd_ioctl cmd=%s(0x%x) arg=%lu\n", 719 718 lo->disk->disk_name, ioctl_cmd_to_ascii(cmd), cmd, arg); 720 719 721 - lock_kernel(); 720 + mutex_lock(&nbd_mutex); 722 721 mutex_lock(&lo->tx_lock); 723 722 error = __nbd_ioctl(bdev, lo, cmd, arg); 724 723 mutex_unlock(&lo->tx_lock); 725 - unlock_kernel(); 724 + mutex_unlock(&nbd_mutex); 726 725 727 726 return error; 728 727 }
+8 -7
drivers/block/paride/pcd.c
··· 138 138 #include <linux/cdrom.h> 139 139 #include <linux/spinlock.h> 140 140 #include <linux/blkdev.h> 141 - #include <linux/smp_lock.h> 141 + #include <linux/mutex.h> 142 142 #include <asm/uaccess.h> 143 143 144 + static DEFINE_MUTEX(pcd_mutex); 144 145 static DEFINE_SPINLOCK(pcd_lock); 145 146 146 147 module_param(verbose, bool, 0644); ··· 228 227 struct pcd_unit *cd = bdev->bd_disk->private_data; 229 228 int ret; 230 229 231 - lock_kernel(); 230 + mutex_lock(&pcd_mutex); 232 231 ret = cdrom_open(&cd->info, bdev, mode); 233 - unlock_kernel(); 232 + mutex_unlock(&pcd_mutex); 234 233 235 234 return ret; 236 235 } ··· 238 237 static int pcd_block_release(struct gendisk *disk, fmode_t mode) 239 238 { 240 239 struct pcd_unit *cd = disk->private_data; 241 - lock_kernel(); 240 + mutex_lock(&pcd_mutex); 242 241 cdrom_release(&cd->info, mode); 243 - unlock_kernel(); 242 + mutex_unlock(&pcd_mutex); 244 243 return 0; 245 244 } 246 245 ··· 250 249 struct pcd_unit *cd = bdev->bd_disk->private_data; 251 250 int ret; 252 251 253 - lock_kernel(); 252 + mutex_lock(&pcd_mutex); 254 253 ret = cdrom_ioctl(&cd->info, bdev, mode, cmd, arg); 255 - unlock_kernel(); 254 + mutex_unlock(&pcd_mutex); 256 255 257 256 return ret; 258 257 }
+8 -7
drivers/block/paride/pd.c
··· 153 153 #include <linux/blkdev.h> 154 154 #include <linux/blkpg.h> 155 155 #include <linux/kernel.h> 156 - #include <linux/smp_lock.h> 156 + #include <linux/mutex.h> 157 157 #include <asm/uaccess.h> 158 158 #include <linux/workqueue.h> 159 159 160 + static DEFINE_MUTEX(pd_mutex); 160 161 static DEFINE_SPINLOCK(pd_lock); 161 162 162 163 module_param(verbose, bool, 0); ··· 737 736 { 738 737 struct pd_unit *disk = bdev->bd_disk->private_data; 739 738 740 - lock_kernel(); 739 + mutex_lock(&pd_mutex); 741 740 disk->access++; 742 741 743 742 if (disk->removable) { 744 743 pd_special_command(disk, pd_media_check); 745 744 pd_special_command(disk, pd_door_lock); 746 745 } 747 - unlock_kernel(); 746 + mutex_unlock(&pd_mutex); 748 747 return 0; 749 748 } 750 749 ··· 772 771 773 772 switch (cmd) { 774 773 case CDROMEJECT: 775 - lock_kernel(); 774 + mutex_lock(&pd_mutex); 776 775 if (disk->access == 1) 777 776 pd_special_command(disk, pd_eject); 778 - unlock_kernel(); 777 + mutex_unlock(&pd_mutex); 779 778 return 0; 780 779 default: 781 780 return -EINVAL; ··· 786 785 { 787 786 struct pd_unit *disk = p->private_data; 788 787 789 - lock_kernel(); 788 + mutex_lock(&pd_mutex); 790 789 if (!--disk->access && disk->removable) 791 790 pd_special_command(disk, pd_door_unlock); 792 - unlock_kernel(); 791 + mutex_unlock(&pd_mutex); 793 792 794 793 return 0; 795 794 }
+9 -8
drivers/block/paride/pf.c
··· 152 152 #include <linux/spinlock.h> 153 153 #include <linux/blkdev.h> 154 154 #include <linux/blkpg.h> 155 - #include <linux/smp_lock.h> 155 + #include <linux/mutex.h> 156 156 #include <asm/uaccess.h> 157 157 158 + static DEFINE_MUTEX(pf_mutex); 158 159 static DEFINE_SPINLOCK(pf_spin_lock); 159 160 160 161 module_param(verbose, bool, 0644); ··· 303 302 struct pf_unit *pf = bdev->bd_disk->private_data; 304 303 int ret; 305 304 306 - lock_kernel(); 305 + mutex_lock(&pf_mutex); 307 306 pf_identify(pf); 308 307 309 308 ret = -ENODEV; ··· 319 318 if (pf->removable) 320 319 pf_lock(pf, 1); 321 320 out: 322 - unlock_kernel(); 321 + mutex_unlock(&pf_mutex); 323 322 return ret; 324 323 } 325 324 ··· 350 349 351 350 if (pf->access != 1) 352 351 return -EBUSY; 353 - lock_kernel(); 352 + mutex_lock(&pf_mutex); 354 353 pf_eject(pf); 355 - unlock_kernel(); 354 + mutex_unlock(&pf_mutex); 356 355 357 356 return 0; 358 357 } ··· 361 360 { 362 361 struct pf_unit *pf = disk->private_data; 363 362 364 - lock_kernel(); 363 + mutex_lock(&pf_mutex); 365 364 if (pf->access <= 0) { 366 - unlock_kernel(); 365 + mutex_unlock(&pf_mutex); 367 366 return -EINVAL; 368 367 } 369 368 ··· 372 371 if (!pf->access && pf->removable) 373 372 pf_lock(pf, 0); 374 373 375 - unlock_kernel(); 374 + mutex_unlock(&pf_mutex); 376 375 return 0; 377 376 378 377 }
+8 -8
drivers/block/pktcdvd.c
··· 57 57 #include <linux/seq_file.h> 58 58 #include <linux/miscdevice.h> 59 59 #include <linux/freezer.h> 60 - #include <linux/smp_lock.h> 61 60 #include <linux/mutex.h> 62 61 #include <linux/slab.h> 63 62 #include <scsi/scsi_cmnd.h> ··· 85 86 86 87 #define ZONE(sector, pd) (((sector) + (pd)->offset) & ~((pd)->settings.size - 1)) 87 88 89 + static DEFINE_MUTEX(pktcdvd_mutex); 88 90 static struct pktcdvd_device *pkt_devs[MAX_WRITERS]; 89 91 static struct proc_dir_entry *pkt_proc; 90 92 static int pktdev_major; ··· 2383 2383 2384 2384 VPRINTK(DRIVER_NAME": entering open\n"); 2385 2385 2386 - lock_kernel(); 2386 + mutex_lock(&pktcdvd_mutex); 2387 2387 mutex_lock(&ctl_mutex); 2388 2388 pd = pkt_find_dev_from_minor(MINOR(bdev->bd_dev)); 2389 2389 if (!pd) { ··· 2411 2411 } 2412 2412 2413 2413 mutex_unlock(&ctl_mutex); 2414 - unlock_kernel(); 2414 + mutex_unlock(&pktcdvd_mutex); 2415 2415 return 0; 2416 2416 2417 2417 out_dec: ··· 2419 2419 out: 2420 2420 VPRINTK(DRIVER_NAME": failed open (%d)\n", ret); 2421 2421 mutex_unlock(&ctl_mutex); 2422 - unlock_kernel(); 2422 + mutex_unlock(&pktcdvd_mutex); 2423 2423 return ret; 2424 2424 } 2425 2425 ··· 2428 2428 struct pktcdvd_device *pd = disk->private_data; 2429 2429 int ret = 0; 2430 2430 2431 - lock_kernel(); 2431 + mutex_lock(&pktcdvd_mutex); 2432 2432 mutex_lock(&ctl_mutex); 2433 2433 pd->refcnt--; 2434 2434 BUG_ON(pd->refcnt < 0); ··· 2437 2437 pkt_release_dev(pd, flush); 2438 2438 } 2439 2439 mutex_unlock(&ctl_mutex); 2440 - unlock_kernel(); 2440 + mutex_unlock(&pktcdvd_mutex); 2441 2441 return ret; 2442 2442 } 2443 2443 ··· 2773 2773 VPRINTK("pkt_ioctl: cmd %x, dev %d:%d\n", cmd, 2774 2774 MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev)); 2775 2775 2776 - lock_kernel(); 2776 + mutex_lock(&pktcdvd_mutex); 2777 2777 switch (cmd) { 2778 2778 case CDROMEJECT: 2779 2779 /* ··· 2798 2798 VPRINTK(DRIVER_NAME": Unknown ioctl for %s (%x)\n", pd->name, cmd); 2799 2799 ret = -ENOTTY; 2800 2800 } 2801 - unlock_kernel(); 2801 + mutex_unlock(&pktcdvd_mutex); 2802 2802 2803 2803 return ret; 2804 2804 }
+8 -7
drivers/block/swim.c
··· 20 20 #include <linux/fd.h> 21 21 #include <linux/slab.h> 22 22 #include <linux/blkdev.h> 23 - #include <linux/smp_lock.h> 23 + #include <linux/mutex.h> 24 24 #include <linux/hdreg.h> 25 25 #include <linux/kernel.h> 26 26 #include <linux/delay.h> ··· 222 222 extern int swim_read_sector_data(struct swim __iomem *base, 223 223 unsigned char *data); 224 224 225 + static DEFINE_MUTEX(swim_mutex); 225 226 static inline void set_swim_mode(struct swim __iomem *base, int enable) 226 227 { 227 228 struct iwm __iomem *iwm_base; ··· 667 666 { 668 667 int ret; 669 668 670 - lock_kernel(); 669 + mutex_lock(&swim_mutex); 671 670 ret = floppy_open(bdev, mode); 672 - unlock_kernel(); 671 + mutex_unlock(&swim_mutex); 673 672 674 673 return ret; 675 674 } ··· 679 678 struct floppy_state *fs = disk->private_data; 680 679 struct swim __iomem *base = fs->swd->base; 681 680 682 - lock_kernel(); 681 + mutex_lock(&swim_mutex); 683 682 if (fs->ref_count < 0) 684 683 fs->ref_count = 0; 685 684 else if (fs->ref_count > 0) ··· 687 686 688 687 if (fs->ref_count == 0) 689 688 swim_motor(base, OFF); 690 - unlock_kernel(); 689 + mutex_unlock(&swim_mutex); 691 690 692 691 return 0; 693 692 } ··· 705 704 case FDEJECT: 706 705 if (fs->ref_count != 1) 707 706 return -EBUSY; 708 - lock_kernel(); 707 + mutex_lock(&swim_mutex); 709 708 err = floppy_eject(fs); 710 - unlock_kernel(); 709 + mutex_unlock(&swim_mutex); 711 710 return err; 712 711 713 712 case FDGETPRM:
+8 -7
drivers/block/swim3.c
··· 25 25 #include <linux/ioctl.h> 26 26 #include <linux/blkdev.h> 27 27 #include <linux/interrupt.h> 28 - #include <linux/smp_lock.h> 28 + #include <linux/mutex.h> 29 29 #include <linux/module.h> 30 30 #include <linux/spinlock.h> 31 31 #include <asm/io.h> ··· 36 36 #include <asm/machdep.h> 37 37 #include <asm/pmac_feature.h> 38 38 39 + static DEFINE_MUTEX(swim3_mutex); 39 40 static struct request_queue *swim3_queue; 40 41 static struct gendisk *disks[2]; 41 42 static struct request *fd_req; ··· 874 873 { 875 874 int ret; 876 875 877 - lock_kernel(); 876 + mutex_lock(&swim3_mutex); 878 877 ret = floppy_locked_ioctl(bdev, mode, cmd, param); 879 - unlock_kernel(); 878 + mutex_unlock(&swim3_mutex); 880 879 881 880 return ret; 882 881 } ··· 954 953 { 955 954 int ret; 956 955 957 - lock_kernel(); 956 + mutex_lock(&swim3_mutex); 958 957 ret = floppy_open(bdev, mode); 959 - unlock_kernel(); 958 + mutex_unlock(&swim3_mutex); 960 959 961 960 return ret; 962 961 } ··· 965 964 { 966 965 struct floppy_state *fs = disk->private_data; 967 966 struct swim3 __iomem *sw = fs->swim3; 968 - lock_kernel(); 967 + mutex_lock(&swim3_mutex); 969 968 if (fs->ref_count > 0 && --fs->ref_count == 0) { 970 969 swim3_action(fs, MOTOR_OFF); 971 970 out_8(&sw->control_bic, 0xff); 972 971 swim3_select(fs, RELAX); 973 972 } 974 - unlock_kernel(); 973 + mutex_unlock(&swim3_mutex); 975 974 return 0; 976 975 } 977 976
+8 -7
drivers/block/ub.c
··· 28 28 #include <linux/timer.h> 29 29 #include <linux/scatterlist.h> 30 30 #include <linux/slab.h> 31 - #include <linux/smp_lock.h> 31 + #include <linux/mutex.h> 32 32 #include <scsi/scsi.h> 33 33 34 34 #define DRV_NAME "ub" ··· 248 248 spinlock_t lock; 249 249 }; 250 250 251 + static DEFINE_MUTEX(ub_mutex); 251 252 static inline void ub_init_completion(struct ub_completion *x) 252 253 { 253 254 x->done = 0; ··· 1716 1715 { 1717 1716 int ret; 1718 1717 1719 - lock_kernel(); 1718 + mutex_lock(&ub_mutex); 1720 1719 ret = ub_bd_open(bdev, mode); 1721 - unlock_kernel(); 1720 + mutex_unlock(&ub_mutex); 1722 1721 1723 1722 return ret; 1724 1723 } ··· 1731 1730 struct ub_lun *lun = disk->private_data; 1732 1731 struct ub_dev *sc = lun->udev; 1733 1732 1734 - lock_kernel(); 1733 + mutex_lock(&ub_mutex); 1735 1734 ub_put(sc); 1736 - unlock_kernel(); 1735 + mutex_unlock(&ub_mutex); 1737 1736 1738 1737 return 0; 1739 1738 } ··· 1748 1747 void __user *usermem = (void __user *) arg; 1749 1748 int ret; 1750 1749 1751 - lock_kernel(); 1750 + mutex_lock(&ub_mutex); 1752 1751 ret = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, usermem); 1753 - unlock_kernel(); 1752 + mutex_unlock(&ub_mutex); 1754 1753 1755 1754 return ret; 1756 1755 }
+6 -5
drivers/block/viodasd.c
··· 41 41 #include <linux/errno.h> 42 42 #include <linux/init.h> 43 43 #include <linux/string.h> 44 - #include <linux/smp_lock.h> 44 + #include <linux/mutex.h> 45 45 #include <linux/dma-mapping.h> 46 46 #include <linux/completion.h> 47 47 #include <linux/device.h> ··· 73 73 MAX_DISK_NAME = FIELD_SIZEOF(struct gendisk, disk_name) 74 74 }; 75 75 76 + static DEFINE_MUTEX(viodasd_mutex); 76 77 static DEFINE_SPINLOCK(viodasd_spinlock); 77 78 78 79 #define VIOMAXREQ 16 ··· 181 180 { 182 181 int ret; 183 182 184 - lock_kernel(); 183 + mutex_lock(&viodasd_mutex); 185 184 ret = viodasd_open(bdev, mode); 186 - unlock_kernel(); 185 + mutex_unlock(&viodasd_mutex); 187 186 188 187 return ret; 189 188 } ··· 197 196 struct viodasd_device *d = disk->private_data; 198 197 HvLpEvent_Rc hvrc; 199 198 200 - lock_kernel(); 199 + mutex_lock(&viodasd_mutex); 201 200 /* Send the event to OS/400. We DON'T expect a response */ 202 201 hvrc = HvCallEvent_signalLpEventFast(viopath_hostLp, 203 202 HvLpEvent_Type_VirtualIo, ··· 211 210 if (hvrc != 0) 212 211 pr_warning("HV close call failed %d\n", (int)hvrc); 213 212 214 - unlock_kernel(); 213 + mutex_unlock(&viodasd_mutex); 215 214 216 215 return 0; 217 216 }
+4 -3
drivers/block/xd.c
··· 46 46 #include <linux/init.h> 47 47 #include <linux/wait.h> 48 48 #include <linux/blkdev.h> 49 - #include <linux/smp_lock.h> 49 + #include <linux/mutex.h> 50 50 #include <linux/blkpg.h> 51 51 #include <linux/delay.h> 52 52 #include <linux/io.h> ··· 58 58 59 59 #include "xd.h" 60 60 61 + static DEFINE_MUTEX(xd_mutex); 61 62 static void __init do_xd_setup (int *integers); 62 63 #ifdef MODULE 63 64 static int xd[5] = { -1,-1,-1,-1, }; ··· 382 381 { 383 382 int ret; 384 383 385 - lock_kernel(); 384 + mutex_lock(&xd_mutex); 386 385 ret = xd_locked_ioctl(bdev, mode, cmd, param); 387 - unlock_kernel(); 386 + mutex_unlock(&xd_mutex); 388 387 389 388 return ret; 390 389 }
+6 -5
drivers/block/xen-blkfront.c
··· 41 41 #include <linux/cdrom.h> 42 42 #include <linux/module.h> 43 43 #include <linux/slab.h> 44 - #include <linux/smp_lock.h> 44 + #include <linux/mutex.h> 45 45 #include <linux/scatterlist.h> 46 46 47 47 #include <xen/xen.h> ··· 69 69 unsigned long frame[BLKIF_MAX_SEGMENTS_PER_REQUEST]; 70 70 }; 71 71 72 + static DEFINE_MUTEX(blkfront_mutex); 72 73 static const struct block_device_operations xlvbd_block_fops; 73 74 74 75 #define BLK_RING_SIZE __RING_SIZE((struct blkif_sring *)0, PAGE_SIZE) ··· 1202 1201 struct blkfront_info *info; 1203 1202 int err = 0; 1204 1203 1205 - lock_kernel(); 1204 + mutex_lock(&blkfront_mutex); 1206 1205 1207 1206 info = disk->private_data; 1208 1207 if (!info) { ··· 1220 1219 mutex_unlock(&info->mutex); 1221 1220 1222 1221 out: 1223 - unlock_kernel(); 1222 + mutex_unlock(&blkfront_mutex); 1224 1223 return err; 1225 1224 } 1226 1225 ··· 1230 1229 struct block_device *bdev; 1231 1230 struct xenbus_device *xbdev; 1232 1231 1233 - lock_kernel(); 1232 + mutex_lock(&blkfront_mutex); 1234 1233 1235 1234 bdev = bdget_disk(disk, 0); 1236 1235 bdput(bdev); ··· 1264 1263 } 1265 1264 1266 1265 out: 1267 - unlock_kernel(); 1266 + mutex_unlock(&blkfront_mutex); 1268 1267 return 0; 1269 1268 } 1270 1269
+6 -5
drivers/block/xsysace.c
··· 89 89 #include <linux/delay.h> 90 90 #include <linux/slab.h> 91 91 #include <linux/blkdev.h> 92 - #include <linux/smp_lock.h> 92 + #include <linux/mutex.h> 93 93 #include <linux/ata.h> 94 94 #include <linux/hdreg.h> 95 95 #include <linux/platform_device.h> ··· 214 214 u16 cf_id[ATA_ID_WORDS]; 215 215 }; 216 216 217 + static DEFINE_MUTEX(xsysace_mutex); 217 218 static int ace_major; 218 219 219 220 /* --------------------------------------------------------------------- ··· 904 903 905 904 dev_dbg(ace->dev, "ace_open() users=%i\n", ace->users + 1); 906 905 907 - lock_kernel(); 906 + mutex_lock(&xsysace_mutex); 908 907 spin_lock_irqsave(&ace->lock, flags); 909 908 ace->users++; 910 909 spin_unlock_irqrestore(&ace->lock, flags); 911 910 912 911 check_disk_change(bdev); 913 - unlock_kernel(); 912 + mutex_unlock(&xsysace_mutex); 914 913 915 914 return 0; 916 915 } ··· 923 922 924 923 dev_dbg(ace->dev, "ace_release() users=%i\n", ace->users - 1); 925 924 926 - lock_kernel(); 925 + mutex_lock(&xsysace_mutex); 927 926 spin_lock_irqsave(&ace->lock, flags); 928 927 ace->users--; 929 928 if (ace->users == 0) { ··· 931 930 ace_out(ace, ACE_CTRL, val & ~ACE_CTRL_LOCKREQ); 932 931 } 933 932 spin_unlock_irqrestore(&ace->lock, flags); 934 - unlock_kernel(); 933 + mutex_unlock(&xsysace_mutex); 935 934 return 0; 936 935 } 937 936
+8 -7
drivers/block/z2ram.c
··· 33 33 #include <linux/module.h> 34 34 #include <linux/blkdev.h> 35 35 #include <linux/bitops.h> 36 - #include <linux/smp_lock.h> 36 + #include <linux/mutex.h> 37 37 #include <linux/slab.h> 38 38 39 39 #include <asm/setup.h> ··· 57 57 58 58 #define Z2RAM_CHUNK1024 ( Z2RAM_CHUNKSIZE >> 10 ) 59 59 60 + static DEFINE_MUTEX(z2ram_mutex); 60 61 static u_long *z2ram_map = NULL; 61 62 static u_long z2ram_size = 0; 62 63 static int z2_count = 0; ··· 155 154 156 155 device = MINOR(bdev->bd_dev); 157 156 158 - lock_kernel(); 157 + mutex_lock(&z2ram_mutex); 159 158 if ( current_device != -1 && current_device != device ) 160 159 { 161 160 rc = -EBUSY; ··· 297 296 set_capacity(z2ram_gendisk, z2ram_size >> 9); 298 297 } 299 298 300 - unlock_kernel(); 299 + mutex_unlock(&z2ram_mutex); 301 300 return 0; 302 301 303 302 err_out_kfree: 304 303 kfree(z2ram_map); 305 304 err_out: 306 - unlock_kernel(); 305 + mutex_unlock(&z2ram_mutex); 307 306 return rc; 308 307 } 309 308 310 309 static int 311 310 z2_release(struct gendisk *disk, fmode_t mode) 312 311 { 313 - lock_kernel(); 312 + mutex_lock(&z2ram_mutex); 314 313 if ( current_device == -1 ) { 315 - unlock_kernel(); 314 + mutex_unlock(&z2ram_mutex); 316 315 return 0; 317 316 } 318 - unlock_kernel(); 317 + mutex_unlock(&z2ram_mutex); 319 318 /* 320 319 * FIXME: unmap memory 321 320 */
+8 -7
drivers/cdrom/gdrom.c
··· 34 34 #include <linux/blkdev.h> 35 35 #include <linux/interrupt.h> 36 36 #include <linux/device.h> 37 - #include <linux/smp_lock.h> 37 + #include <linux/mutex.h> 38 38 #include <linux/wait.h> 39 39 #include <linux/workqueue.h> 40 40 #include <linux/platform_device.h> ··· 81 81 82 82 #define GDROM_DEFAULT_TIMEOUT (HZ * 7) 83 83 84 + static DEFINE_MUTEX(gdrom_mutex); 84 85 static const struct { 85 86 int sense_key; 86 87 const char * const text; ··· 495 494 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode) 496 495 { 497 496 int ret; 498 - lock_kernel(); 497 + mutex_lock(&gdrom_mutex); 499 498 ret = cdrom_open(gd.cd_info, bdev, mode); 500 - unlock_kernel(); 499 + mutex_unlock(&gdrom_mutex); 501 500 return ret; 502 501 } 503 502 504 503 static int gdrom_bdops_release(struct gendisk *disk, fmode_t mode) 505 504 { 506 - lock_kernel(); 505 + mutex_lock(&gdrom_mutex); 507 506 cdrom_release(gd.cd_info, mode); 508 - unlock_kernel(); 507 + mutex_unlock(&gdrom_mutex); 509 508 return 0; 510 509 } 511 510 ··· 519 518 { 520 519 int ret; 521 520 522 - lock_kernel(); 521 + mutex_lock(&gdrom_mutex); 523 522 ret = cdrom_ioctl(gd.cd_info, bdev, mode, cmd, arg); 524 - unlock_kernel(); 523 + mutex_unlock(&gdrom_mutex); 525 524 526 525 return ret; 527 526 }
+8 -7
drivers/cdrom/viocd.c
··· 42 42 #include <linux/module.h> 43 43 #include <linux/completion.h> 44 44 #include <linux/proc_fs.h> 45 - #include <linux/smp_lock.h> 45 + #include <linux/mutex.h> 46 46 #include <linux/seq_file.h> 47 47 #include <linux/scatterlist.h> 48 48 ··· 61 61 */ 62 62 #define VIOCD_MAX_CD HVMAXARCHITECTEDVIRTUALCDROMS 63 63 64 + static DEFINE_MUTEX(viocd_mutex); 64 65 static const struct vio_error_entry viocd_err_table[] = { 65 66 {0x0201, EINVAL, "Invalid Range"}, 66 67 {0x0202, EINVAL, "Invalid Token"}, ··· 157 156 struct disk_info *di = bdev->bd_disk->private_data; 158 157 int ret; 159 158 160 - lock_kernel(); 159 + mutex_lock(&viocd_mutex); 161 160 ret = cdrom_open(&di->viocd_info, bdev, mode); 162 - unlock_kernel(); 161 + mutex_unlock(&viocd_mutex); 163 162 164 163 return ret; 165 164 } ··· 167 166 static int viocd_blk_release(struct gendisk *disk, fmode_t mode) 168 167 { 169 168 struct disk_info *di = disk->private_data; 170 - lock_kernel(); 169 + mutex_lock(&viocd_mutex); 171 170 cdrom_release(&di->viocd_info, mode); 172 - unlock_kernel(); 171 + mutex_unlock(&viocd_mutex); 173 172 return 0; 174 173 } 175 174 ··· 179 178 struct disk_info *di = bdev->bd_disk->private_data; 180 179 int ret; 181 180 182 - lock_kernel(); 181 + mutex_lock(&viocd_mutex); 183 182 ret = cdrom_ioctl(&di->viocd_info, bdev, mode, cmd, arg); 184 - unlock_kernel(); 183 + mutex_unlock(&viocd_mutex); 185 184 186 185 return ret; 187 186 }
+7 -7
drivers/ide/ide-cd.c
··· 31 31 #include <linux/delay.h> 32 32 #include <linux/timer.h> 33 33 #include <linux/seq_file.h> 34 - #include <linux/smp_lock.h> 35 34 #include <linux/slab.h> 36 35 #include <linux/interrupt.h> 37 36 #include <linux/errno.h> ··· 51 52 52 53 #include "ide-cd.h" 53 54 55 + static DEFINE_MUTEX(ide_cd_mutex); 54 56 static DEFINE_MUTEX(idecd_ref_mutex); 55 57 56 58 static void ide_cd_release(struct device *); ··· 1602 1602 struct cdrom_info *info; 1603 1603 int rc = -ENXIO; 1604 1604 1605 - lock_kernel(); 1605 + mutex_lock(&ide_cd_mutex); 1606 1606 info = ide_cd_get(bdev->bd_disk); 1607 1607 if (!info) 1608 1608 goto out; ··· 1611 1611 if (rc < 0) 1612 1612 ide_cd_put(info); 1613 1613 out: 1614 - unlock_kernel(); 1614 + mutex_unlock(&ide_cd_mutex); 1615 1615 return rc; 1616 1616 } 1617 1617 ··· 1619 1619 { 1620 1620 struct cdrom_info *info = ide_drv_g(disk, cdrom_info); 1621 1621 1622 - lock_kernel(); 1622 + mutex_lock(&ide_cd_mutex); 1623 1623 cdrom_release(&info->devinfo, mode); 1624 1624 1625 1625 ide_cd_put(info); 1626 - unlock_kernel(); 1626 + mutex_unlock(&ide_cd_mutex); 1627 1627 1628 1628 return 0; 1629 1629 } ··· 1694 1694 { 1695 1695 int ret; 1696 1696 1697 - lock_kernel(); 1697 + mutex_lock(&ide_cd_mutex); 1698 1698 ret = idecd_locked_ioctl(bdev, mode, cmd, arg); 1699 - unlock_kernel(); 1699 + mutex_unlock(&ide_cd_mutex); 1700 1700 1701 1701 return ret; 1702 1702 }
+4 -3
drivers/ide/ide-disk_ioctl.c
··· 1 1 #include <linux/kernel.h> 2 2 #include <linux/ide.h> 3 3 #include <linux/hdreg.h> 4 - #include <linux/smp_lock.h> 4 + #include <linux/mutex.h> 5 5 6 6 #include "ide-disk.h" 7 7 8 + static DEFINE_MUTEX(ide_disk_ioctl_mutex); 8 9 static const struct ide_ioctl_devset ide_disk_ioctl_settings[] = { 9 10 { HDIO_GET_ADDRESS, HDIO_SET_ADDRESS, &ide_devset_address }, 10 11 { HDIO_GET_MULTCOUNT, HDIO_SET_MULTCOUNT, &ide_devset_multcount }, ··· 20 19 { 21 20 int err; 22 21 23 - lock_kernel(); 22 + mutex_lock(&ide_disk_ioctl_mutex); 24 23 err = ide_setting_ioctl(drive, bdev, cmd, arg, ide_disk_ioctl_settings); 25 24 if (err != -EOPNOTSUPP) 26 25 goto out; 27 26 28 27 err = generic_ide_ioctl(drive, bdev, cmd, arg); 29 28 out: 30 - unlock_kernel(); 29 + mutex_unlock(&ide_disk_ioctl_mutex); 31 30 return err; 32 31 }
+4 -3
drivers/ide/ide-floppy_ioctl.c
··· 5 5 #include <linux/kernel.h> 6 6 #include <linux/ide.h> 7 7 #include <linux/cdrom.h> 8 - #include <linux/smp_lock.h> 8 + #include <linux/mutex.h> 9 9 10 10 #include <asm/unaligned.h> 11 11 ··· 32 32 * On exit we set nformats to the number of records we've actually initialized. 33 33 */ 34 34 35 + static DEFINE_MUTEX(ide_floppy_ioctl_mutex); 35 36 static int ide_floppy_get_format_capacities(ide_drive_t *drive, 36 37 struct ide_atapi_pc *pc, 37 38 int __user *arg) ··· 277 276 void __user *argp = (void __user *)arg; 278 277 int err; 279 278 280 - lock_kernel(); 279 + mutex_lock(&ide_floppy_ioctl_mutex); 281 280 if (cmd == CDROMEJECT || cmd == CDROM_LOCKDOOR) { 282 281 err = ide_floppy_lockdoor(drive, &pc, arg, cmd); 283 282 goto out; ··· 299 298 err = generic_ide_ioctl(drive, bdev, cmd, arg); 300 299 301 300 out: 302 - unlock_kernel(); 301 + mutex_unlock(&ide_floppy_ioctl_mutex); 303 302 return err; 304 303 }
+5 -5
drivers/ide/ide-gd.c
··· 1 - #include <linux/smp_lock.h> 2 1 #include <linux/module.h> 3 2 #include <linux/types.h> 4 3 #include <linux/string.h> ··· 22 23 #define IDE_GD_VERSION "1.18" 23 24 24 25 /* module parameters */ 26 + static DEFINE_MUTEX(ide_gd_mutex); 25 27 static unsigned long debug_mask; 26 28 module_param(debug_mask, ulong, 0644); 27 29 ··· 242 242 { 243 243 int ret; 244 244 245 - lock_kernel(); 245 + mutex_lock(&ide_gd_mutex); 246 246 ret = ide_gd_open(bdev, mode); 247 - unlock_kernel(); 247 + mutex_unlock(&ide_gd_mutex); 248 248 249 249 return ret; 250 250 } ··· 257 257 258 258 ide_debug_log(IDE_DBG_FUNC, "enter"); 259 259 260 - lock_kernel(); 260 + mutex_lock(&ide_gd_mutex); 261 261 if (idkp->openers == 1) 262 262 drive->disk_ops->flush(drive); 263 263 ··· 269 269 idkp->openers--; 270 270 271 271 ide_disk_put(idkp); 272 - unlock_kernel(); 272 + mutex_unlock(&ide_gd_mutex); 273 273 274 274 return 0; 275 275 }
+9 -10
drivers/ide/ide-tape.c
··· 32 32 #include <linux/errno.h> 33 33 #include <linux/genhd.h> 34 34 #include <linux/seq_file.h> 35 - #include <linux/smp_lock.h> 36 35 #include <linux/slab.h> 37 36 #include <linux/pci.h> 38 37 #include <linux/ide.h> 39 - #include <linux/smp_lock.h> 40 38 #include <linux/completion.h> 41 39 #include <linux/bitops.h> 42 40 #include <linux/mutex.h> ··· 218 220 char write_prot; 219 221 } idetape_tape_t; 220 222 223 + static DEFINE_MUTEX(ide_tape_mutex); 221 224 static DEFINE_MUTEX(idetape_ref_mutex); 222 225 223 226 static DEFINE_MUTEX(idetape_chrdev_mutex); ··· 1425 1426 unsigned int cmd, unsigned long arg) 1426 1427 { 1427 1428 long ret; 1428 - lock_kernel(); 1429 + mutex_lock(&ide_tape_mutex); 1429 1430 ret = do_idetape_chrdev_ioctl(file, cmd, arg); 1430 - unlock_kernel(); 1431 + mutex_unlock(&ide_tape_mutex); 1431 1432 return ret; 1432 1433 } 1433 1434 ··· 1908 1909 { 1909 1910 struct ide_tape_obj *tape; 1910 1911 1911 - lock_kernel(); 1912 + mutex_lock(&ide_tape_mutex); 1912 1913 tape = ide_tape_get(bdev->bd_disk, false, 0); 1913 - unlock_kernel(); 1914 + mutex_unlock(&ide_tape_mutex); 1914 1915 1915 1916 if (!tape) 1916 1917 return -ENXIO; ··· 1922 1923 { 1923 1924 struct ide_tape_obj *tape = ide_drv_g(disk, ide_tape_obj); 1924 1925 1925 - lock_kernel(); 1926 + mutex_lock(&ide_tape_mutex); 1926 1927 ide_tape_put(tape); 1927 - unlock_kernel(); 1928 + mutex_unlock(&ide_tape_mutex); 1928 1929 1929 1930 return 0; 1930 1931 } ··· 1936 1937 ide_drive_t *drive = tape->drive; 1937 1938 int err; 1938 1939 1939 - lock_kernel(); 1940 + mutex_lock(&ide_tape_mutex); 1940 1941 err = generic_ide_ioctl(drive, bdev, cmd, arg); 1941 1942 if (err == -EINVAL) 1942 1943 err = idetape_blkdev_ioctl(drive, cmd, arg); 1943 - unlock_kernel(); 1944 + mutex_unlock(&ide_tape_mutex); 1944 1945 1945 1946 return err; 1946 1947 }
+5 -5
drivers/md/dm.c
··· 15 15 #include <linux/blkpg.h> 16 16 #include <linux/bio.h> 17 17 #include <linux/buffer_head.h> 18 - #include <linux/smp_lock.h> 19 18 #include <linux/mempool.h> 20 19 #include <linux/slab.h> 21 20 #include <linux/idr.h> ··· 32 33 #define DM_COOKIE_ENV_VAR_NAME "DM_COOKIE" 33 34 #define DM_COOKIE_LENGTH 24 34 35 36 + static DEFINE_MUTEX(dm_mutex); 35 37 static const char *_name = DM_NAME; 36 38 37 39 static unsigned int major = 0; ··· 344 344 { 345 345 struct mapped_device *md; 346 346 347 - lock_kernel(); 347 + mutex_lock(&dm_mutex); 348 348 spin_lock(&_minor_lock); 349 349 350 350 md = bdev->bd_disk->private_data; ··· 362 362 363 363 out: 364 364 spin_unlock(&_minor_lock); 365 - unlock_kernel(); 365 + mutex_unlock(&dm_mutex); 366 366 367 367 return md ? 0 : -ENXIO; 368 368 } ··· 371 371 { 372 372 struct mapped_device *md = disk->private_data; 373 373 374 - lock_kernel(); 374 + mutex_lock(&dm_mutex); 375 375 atomic_dec(&md->open_count); 376 376 dm_put(md); 377 - unlock_kernel(); 377 + mutex_unlock(&dm_mutex); 378 378 379 379 return 0; 380 380 }
+7 -6
drivers/md/md.c
··· 36 36 #include <linux/blkdev.h> 37 37 #include <linux/sysctl.h> 38 38 #include <linux/seq_file.h> 39 - #include <linux/smp_lock.h> 39 + #include <linux/mutex.h> 40 40 #include <linux/buffer_head.h> /* for invalidate_bdev */ 41 41 #include <linux/poll.h> 42 42 #include <linux/ctype.h> ··· 57 57 #define DEBUG 0 58 58 #define dprintk(x...) ((void)(DEBUG && printk(x))) 59 59 60 + static DEFINE_MUTEX(md_mutex); 60 61 61 62 #ifndef MODULE 62 63 static void autostart_arrays(int part); ··· 5950 5949 mddev_t *mddev = mddev_find(bdev->bd_dev); 5951 5950 int err; 5952 5951 5953 - lock_kernel(); 5952 + mutex_lock(&md_mutex); 5954 5953 if (mddev->gendisk != bdev->bd_disk) { 5955 5954 /* we are racing with mddev_put which is discarding this 5956 5955 * bd_disk. ··· 5959 5958 /* Wait until bdev->bd_disk is definitely gone */ 5960 5959 flush_scheduled_work(); 5961 5960 /* Then retry the open from the top */ 5962 - unlock_kernel(); 5961 + mutex_unlock(&md_mutex); 5963 5962 return -ERESTARTSYS; 5964 5963 } 5965 5964 BUG_ON(mddev != bdev->bd_disk->private_data); ··· 5973 5972 5974 5973 check_disk_size_change(mddev->gendisk, bdev); 5975 5974 out: 5976 - unlock_kernel(); 5975 + mutex_unlock(&md_mutex); 5977 5976 return err; 5978 5977 } 5979 5978 ··· 5982 5981 mddev_t *mddev = disk->private_data; 5983 5982 5984 5983 BUG_ON(!mddev); 5985 - lock_kernel(); 5984 + mutex_lock(&md_mutex); 5986 5985 atomic_dec(&mddev->openers); 5987 5986 mddev_put(mddev); 5988 - unlock_kernel(); 5987 + mutex_unlock(&md_mutex); 5989 5988 5990 5989 return 0; 5991 5990 }
+6 -5
drivers/memstick/core/mspro_block.c
··· 18 18 #include <linux/kthread.h> 19 19 #include <linux/delay.h> 20 20 #include <linux/slab.h> 21 - #include <linux/smp_lock.h> 21 + #include <linux/mutex.h> 22 22 #include <linux/memstick.h> 23 23 24 24 #define DRIVER_NAME "mspro_block" 25 25 26 + static DEFINE_MUTEX(mspro_block_mutex); 26 27 static int major; 27 28 module_param(major, int, 0644); 28 29 ··· 181 180 struct mspro_block_data *msb = disk->private_data; 182 181 int rc = -ENXIO; 183 182 184 - lock_kernel(); 183 + mutex_lock(&mspro_block_mutex); 185 184 mutex_lock(&mspro_block_disk_lock); 186 185 187 186 if (msb && msb->card) { ··· 193 192 } 194 193 195 194 mutex_unlock(&mspro_block_disk_lock); 196 - unlock_kernel(); 195 + mutex_unlock(&mspro_block_mutex); 197 196 198 197 return rc; 199 198 } ··· 226 225 static int mspro_block_bd_release(struct gendisk *disk, fmode_t mode) 227 226 { 228 227 int ret; 229 - lock_kernel(); 228 + mutex_lock(&mspro_block_mutex); 230 229 ret = mspro_block_disk_release(disk); 231 - unlock_kernel(); 230 + mutex_unlock(&mspro_block_mutex); 232 231 return ret; 233 232 } 234 233
+8 -7
drivers/message/i2o/i2o_block.c
··· 53 53 #include <linux/module.h> 54 54 #include <linux/slab.h> 55 55 #include <linux/i2o.h> 56 - #include <linux/smp_lock.h> 56 + #include <linux/mutex.h> 57 57 58 58 #include <linux/mempool.h> 59 59 ··· 69 69 #define OSM_VERSION "1.325" 70 70 #define OSM_DESCRIPTION "I2O Block Device OSM" 71 71 72 + static DEFINE_MUTEX(i2o_block_mutex); 72 73 static struct i2o_driver i2o_block_driver; 73 74 74 75 /* global Block OSM request mempool */ ··· 579 578 if (!dev->i2o_dev) 580 579 return -ENODEV; 581 580 582 - lock_kernel(); 581 + mutex_lock(&i2o_block_mutex); 583 582 if (dev->power > 0x1f) 584 583 i2o_block_device_power(dev, 0x02); 585 584 ··· 588 587 i2o_block_device_lock(dev->i2o_dev, -1); 589 588 590 589 osm_debug("Ready.\n"); 591 - unlock_kernel(); 590 + mutex_unlock(&i2o_block_mutex); 592 591 593 592 return 0; 594 593 }; ··· 619 618 if (!dev->i2o_dev) 620 619 return 0; 621 620 622 - lock_kernel(); 621 + mutex_lock(&i2o_block_mutex); 623 622 i2o_block_device_flush(dev->i2o_dev); 624 623 625 624 i2o_block_device_unlock(dev->i2o_dev, -1); ··· 630 629 operation = 0x24; 631 630 632 631 i2o_block_device_power(dev, operation); 633 - unlock_kernel(); 632 + mutex_unlock(&i2o_block_mutex); 634 633 635 634 return 0; 636 635 } ··· 665 664 if (!capable(CAP_SYS_ADMIN)) 666 665 return -EPERM; 667 666 668 - lock_kernel(); 667 + mutex_lock(&i2o_block_mutex); 669 668 switch (cmd) { 670 669 case BLKI2OGRSTRAT: 671 670 ret = put_user(dev->rcache, (int __user *)arg); ··· 689 688 ret = 0; 690 689 break; 691 690 } 692 - unlock_kernel(); 691 + mutex_unlock(&i2o_block_mutex); 693 692 694 693 return ret; 695 694 };
+5 -5
drivers/mmc/card/block.c
··· 29 29 #include <linux/kdev_t.h> 30 30 #include <linux/blkdev.h> 31 31 #include <linux/mutex.h> 32 - #include <linux/smp_lock.h> 33 32 #include <linux/scatterlist.h> 34 33 #include <linux/string_helpers.h> 35 34 ··· 50 51 #define MMC_SHIFT 3 51 52 #define MMC_NUM_MINORS (256 >> MMC_SHIFT) 52 53 54 + static DEFINE_MUTEX(block_mutex); 53 55 static DECLARE_BITMAP(dev_use, MMC_NUM_MINORS); 54 56 55 57 /* ··· 108 108 struct mmc_blk_data *md = mmc_blk_get(bdev->bd_disk); 109 109 int ret = -ENXIO; 110 110 111 - lock_kernel(); 111 + mutex_lock(&block_mutex); 112 112 if (md) { 113 113 if (md->usage == 2) 114 114 check_disk_change(bdev); ··· 119 119 ret = -EROFS; 120 120 } 121 121 } 122 - unlock_kernel(); 122 + mutex_unlock(&block_mutex); 123 123 124 124 return ret; 125 125 } ··· 128 128 { 129 129 struct mmc_blk_data *md = disk->private_data; 130 130 131 - lock_kernel(); 131 + mutex_lock(&block_mutex); 132 132 mmc_blk_put(md); 133 - unlock_kernel(); 133 + mutex_unlock(&block_mutex); 134 134 return 0; 135 135 } 136 136
+7 -7
drivers/mtd/mtd_blkdevs.c
··· 29 29 #include <linux/blkdev.h> 30 30 #include <linux/blkpg.h> 31 31 #include <linux/spinlock.h> 32 - #include <linux/smp_lock.h> 33 32 #include <linux/hdreg.h> 34 33 #include <linux/init.h> 35 34 #include <linux/mutex.h> ··· 37 38 38 39 #include "mtdcore.h" 39 40 41 + static DEFINE_MUTEX(mtd_blkdevs_mutex); 40 42 static LIST_HEAD(blktrans_majors); 41 43 static DEFINE_MUTEX(blktrans_ref_mutex); 42 44 ··· 181 181 if (!dev) 182 182 return -ERESTARTSYS; /* FIXME: busy loop! -arnd*/ 183 183 184 - lock_kernel(); 184 + mutex_lock(&mtd_blkdevs_mutex); 185 185 mutex_lock(&dev->lock); 186 186 187 187 if (!dev->mtd) { ··· 198 198 unlock: 199 199 mutex_unlock(&dev->lock); 200 200 blktrans_dev_put(dev); 201 - unlock_kernel(); 201 + mutex_unlock(&mtd_blkdevs_mutex); 202 202 return ret; 203 203 } 204 204 ··· 210 210 if (!dev) 211 211 return ret; 212 212 213 - lock_kernel(); 213 + mutex_lock(&mtd_blkdevs_mutex); 214 214 mutex_lock(&dev->lock); 215 215 216 216 /* Release one reference, we sure its not the last one here*/ ··· 223 223 unlock: 224 224 mutex_unlock(&dev->lock); 225 225 blktrans_dev_put(dev); 226 - unlock_kernel(); 226 + mutex_unlock(&mtd_blkdevs_mutex); 227 227 return ret; 228 228 } 229 229 ··· 256 256 if (!dev) 257 257 return ret; 258 258 259 - lock_kernel(); 259 + mutex_lock(&mtd_blkdevs_mutex); 260 260 mutex_lock(&dev->lock); 261 261 262 262 if (!dev->mtd) ··· 271 271 } 272 272 unlock: 273 273 mutex_unlock(&dev->lock); 274 - unlock_kernel(); 274 + mutex_unlock(&mtd_blkdevs_mutex); 275 275 blktrans_dev_put(dev); 276 276 return ret; 277 277 }
+7 -6
drivers/s390/char/tape_block.c
··· 16 16 #include <linux/fs.h> 17 17 #include <linux/module.h> 18 18 #include <linux/blkdev.h> 19 - #include <linux/smp_lock.h> 19 + #include <linux/mutex.h> 20 20 #include <linux/interrupt.h> 21 21 #include <linux/buffer_head.h> 22 22 #include <linux/kernel.h> ··· 45 45 /* 46 46 * file operation structure for tape block frontend 47 47 */ 48 + static DEFINE_MUTEX(tape_block_mutex); 48 49 static int tapeblock_open(struct block_device *, fmode_t); 49 50 static int tapeblock_release(struct gendisk *, fmode_t); 50 51 static int tapeblock_medium_changed(struct gendisk *); ··· 362 361 struct tape_device * device; 363 362 int rc; 364 363 365 - lock_kernel(); 364 + mutex_lock(&tape_block_mutex); 366 365 device = tape_get_device(disk->private_data); 367 366 368 367 if (device->required_tapemarks) { ··· 386 385 * is called. 387 386 */ 388 387 tape_state_set(device, TS_BLKUSE); 389 - unlock_kernel(); 388 + mutex_unlock(&tape_block_mutex); 390 389 return 0; 391 390 392 391 release: 393 392 tape_release(device); 394 393 put_device: 395 394 tape_put_device(device); 396 - unlock_kernel(); 395 + mutex_unlock(&tape_block_mutex); 397 396 return rc; 398 397 } 399 398 ··· 408 407 { 409 408 struct tape_device *device = disk->private_data; 410 409 411 - lock_kernel(); 410 + mutex_lock(&tape_block_mutex); 412 411 tape_state_set(device, TS_IN_USE); 413 412 tape_release(device); 414 413 tape_put_device(device); 415 - unlock_kernel(); 414 + mutex_unlock(&tape_block_mutex); 416 415 417 416 return 0; 418 417 }
+7 -7
drivers/scsi/sr.c
··· 44 44 #include <linux/init.h> 45 45 #include <linux/blkdev.h> 46 46 #include <linux/mutex.h> 47 - #include <linux/smp_lock.h> 48 47 #include <linux/slab.h> 49 48 #include <asm/uaccess.h> 50 49 ··· 75 76 CDC_CD_R|CDC_CD_RW|CDC_DVD|CDC_DVD_R|CDC_DVD_RAM|CDC_GENERIC_PACKET| \ 76 77 CDC_MRW|CDC_MRW_W|CDC_RAM) 77 78 79 + static DEFINE_MUTEX(sr_mutex); 78 80 static int sr_probe(struct device *); 79 81 static int sr_remove(struct device *); 80 82 static int sr_done(struct scsi_cmnd *); ··· 470 470 struct scsi_cd *cd; 471 471 int ret = -ENXIO; 472 472 473 - lock_kernel(); 473 + mutex_lock(&sr_mutex); 474 474 cd = scsi_cd_get(bdev->bd_disk); 475 475 if (cd) { 476 476 ret = cdrom_open(&cd->cdi, bdev, mode); 477 477 if (ret) 478 478 scsi_cd_put(cd); 479 479 } 480 - unlock_kernel(); 480 + mutex_unlock(&sr_mutex); 481 481 return ret; 482 482 } 483 483 484 484 static int sr_block_release(struct gendisk *disk, fmode_t mode) 485 485 { 486 486 struct scsi_cd *cd = scsi_cd(disk); 487 - lock_kernel(); 487 + mutex_lock(&sr_mutex); 488 488 cdrom_release(&cd->cdi, mode); 489 489 scsi_cd_put(cd); 490 - unlock_kernel(); 490 + mutex_unlock(&sr_mutex); 491 491 return 0; 492 492 } 493 493 ··· 499 499 void __user *argp = (void __user *)arg; 500 500 int ret; 501 501 502 - lock_kernel(); 502 + mutex_lock(&sr_mutex); 503 503 504 504 /* 505 505 * Send SCSI addressing ioctls directly to mid level, send other ··· 529 529 ret = scsi_ioctl(sdev, cmd, argp); 530 530 531 531 out: 532 - unlock_kernel(); 532 + mutex_unlock(&sr_mutex); 533 533 return ret; 534 534 } 535 535
+6 -6
drivers/scsi/st.c
··· 39 39 #include <linux/cdev.h> 40 40 #include <linux/delay.h> 41 41 #include <linux/mutex.h> 42 - #include <linux/smp_lock.h> 43 42 44 43 #include <asm/uaccess.h> 45 44 #include <asm/dma.h> ··· 75 76 #include "st_options.h" 76 77 #include "st.h" 77 78 79 + static DEFINE_MUTEX(st_mutex); 78 80 static int buffer_kbs; 79 81 static int max_sg_segs; 80 82 static int try_direct_io = TRY_DIRECT_IO; ··· 1180 1180 int dev = TAPE_NR(inode); 1181 1181 char *name; 1182 1182 1183 - lock_kernel(); 1183 + mutex_lock(&st_mutex); 1184 1184 /* 1185 1185 * We really want to do nonseekable_open(inode, filp); here, but some 1186 1186 * versions of tar incorrectly call lseek on tapes and bail out if that ··· 1189 1189 filp->f_mode &= ~(FMODE_PREAD | FMODE_PWRITE); 1190 1190 1191 1191 if (!(STp = scsi_tape_get(dev))) { 1192 - unlock_kernel(); 1192 + mutex_unlock(&st_mutex); 1193 1193 return -ENXIO; 1194 1194 } 1195 1195 ··· 1200 1200 if (STp->in_use) { 1201 1201 write_unlock(&st_dev_arr_lock); 1202 1202 scsi_tape_put(STp); 1203 - unlock_kernel(); 1203 + mutex_unlock(&st_mutex); 1204 1204 DEB( printk(ST_DEB_MSG "%s: Device already in use.\n", name); ) 1205 1205 return (-EBUSY); 1206 1206 } ··· 1249 1249 retval = (-EIO); 1250 1250 goto err_out; 1251 1251 } 1252 - unlock_kernel(); 1252 + mutex_unlock(&st_mutex); 1253 1253 return 0; 1254 1254 1255 1255 err_out: 1256 1256 normalize_buffer(STp->buffer); 1257 1257 STp->in_use = 0; 1258 1258 scsi_tape_put(STp); 1259 - unlock_kernel(); 1259 + mutex_unlock(&st_mutex); 1260 1260 return retval; 1261 1261 1262 1262 }
+6 -5
drivers/staging/hv/blkvsc_drv.c
··· 25 25 #include <linux/major.h> 26 26 #include <linux/delay.h> 27 27 #include <linux/hdreg.h> 28 - #include <linux/smp_lock.h> 28 + #include <linux/mutex.h> 29 29 #include <linux/slab.h> 30 30 #include <scsi/scsi.h> 31 31 #include <scsi/scsi_cmnd.h> ··· 124 124 }; 125 125 126 126 /* Static decl */ 127 + static DEFINE_MUTEX(blkvsc_mutex); 127 128 static int blkvsc_probe(struct device *dev); 128 129 static int blkvsc_remove(struct device *device); 129 130 static void blkvsc_shutdown(struct device *device); ··· 1310 1309 DPRINT_DBG(BLKVSC_DRV, "- users %d disk %s\n", blkdev->users, 1311 1310 blkdev->gd->disk_name); 1312 1311 1313 - lock_kernel(); 1312 + mutex_lock(&blkvsc_mutex); 1314 1313 spin_lock(&blkdev->lock); 1315 1314 1316 1315 if (!blkdev->users && blkdev->device_type == DVD_TYPE) { ··· 1322 1321 blkdev->users++; 1323 1322 1324 1323 spin_unlock(&blkdev->lock); 1325 - unlock_kernel(); 1324 + mutex_unlock(&blkvsc_mutex); 1326 1325 return 0; 1327 1326 } 1328 1327 ··· 1333 1332 DPRINT_DBG(BLKVSC_DRV, "- users %d disk %s\n", blkdev->users, 1334 1333 blkdev->gd->disk_name); 1335 1334 1336 - lock_kernel(); 1335 + mutex_lock(&blkvsc_mutex); 1337 1336 spin_lock(&blkdev->lock); 1338 1337 if (blkdev->users == 1) { 1339 1338 spin_unlock(&blkdev->lock); ··· 1344 1343 blkdev->users--; 1345 1344 1346 1345 spin_unlock(&blkdev->lock); 1347 - unlock_kernel(); 1346 + mutex_unlock(&blkvsc_mutex); 1348 1347 return 0; 1349 1348 } 1350 1349
+4 -3
drivers/staging/spectra/ffsport.c
··· 27 27 #include <linux/kthread.h> 28 28 #include <linux/log2.h> 29 29 #include <linux/init.h> 30 - #include <linux/smp_lock.h> 31 30 #include <linux/slab.h> 32 31 33 32 /**** Helper functions used for Div, Remainder operation on u64 ****/ ··· 589 590 return -ENOTTY; 590 591 } 591 592 593 + static DEFINE_MUTEX(ffsport_mutex); 594 + 592 595 int GLOB_SBD_unlocked_ioctl(struct block_device *bdev, fmode_t mode, 593 596 unsigned int cmd, unsigned long arg) 594 597 { 595 598 int ret; 596 599 597 - lock_kernel(); 600 + mutex_lock(&ffsport_mutex); 598 601 ret = GLOB_SBD_ioctl(bdev, mode, cmd, arg); 599 - unlock_kernel(); 602 + mutex_unlock(&ffsport_mutex); 600 603 601 604 return ret; 602 605 }