Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl

* 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
block: autoconvert trivial BKL users to private mutex
drivers: autoconvert trivial BKL users to private mutex
ipmi: autoconvert trivial BKL users to private mutex
mac: autoconvert trivial BKL users to private mutex
mtd: autoconvert trivial BKL users to private mutex
scsi: autoconvert trivial BKL users to private mutex

Fix up trivial conflicts (due to addition of private mutex right next to
deletion of a version string) in drivers/char/pcmcia/cm40[04]0_cs.c

+614 -556
-3
block/bsg.c
··· 20 #include <linux/uio.h> 21 #include <linux/idr.h> 22 #include <linux/bsg.h> 23 - #include <linux/smp_lock.h> 24 #include <linux/slab.h> 25 26 #include <scsi/scsi.h> ··· 842 { 843 struct bsg_device *bd; 844 845 - lock_kernel(); 846 bd = bsg_get_device(inode, file); 847 - unlock_kernel(); 848 849 if (IS_ERR(bd)) 850 return PTR_ERR(bd);
··· 20 #include <linux/uio.h> 21 #include <linux/idr.h> 22 #include <linux/bsg.h> 23 #include <linux/slab.h> 24 25 #include <scsi/scsi.h> ··· 843 { 844 struct bsg_device *bd; 845 846 bd = bsg_get_device(inode, file); 847 848 if (IS_ERR(bd)) 849 return PTR_ERR(bd);
+6 -5
drivers/block/DAC960.c
··· 36 #include <linux/ioport.h> 37 #include <linux/mm.h> 38 #include <linux/slab.h> 39 - #include <linux/smp_lock.h> 40 #include <linux/proc_fs.h> 41 #include <linux/seq_file.h> 42 #include <linux/reboot.h> ··· 54 #define DAC960_GAM_MINOR 252 55 56 57 static DAC960_Controller_T *DAC960_Controllers[DAC960_MaxControllers]; 58 static int DAC960_ControllerCount; 59 static struct proc_dir_entry *DAC960_ProcDirectoryEntry; ··· 82 int drive_nr = (long)disk->private_data; 83 int ret = -ENXIO; 84 85 - lock_kernel(); 86 if (p->FirmwareType == DAC960_V1_Controller) { 87 if (p->V1.LogicalDriveInformation[drive_nr]. 88 LogicalDriveState == DAC960_V1_LogicalDrive_Offline) ··· 100 goto out; 101 ret = 0; 102 out: 103 - unlock_kernel(); 104 return ret; 105 } 106 ··· 6626 long ErrorCode = 0; 6627 if (!capable(CAP_SYS_ADMIN)) return -EACCES; 6628 6629 - lock_kernel(); 6630 switch (Request) 6631 { 6632 case DAC960_IOCTL_GET_CONTROLLER_COUNT: ··· 7057 default: 7058 ErrorCode = -ENOTTY; 7059 } 7060 - unlock_kernel(); 7061 return ErrorCode; 7062 } 7063
··· 36 #include <linux/ioport.h> 37 #include <linux/mm.h> 38 #include <linux/slab.h> 39 + #include <linux/mutex.h> 40 #include <linux/proc_fs.h> 41 #include <linux/seq_file.h> 42 #include <linux/reboot.h> ··· 54 #define DAC960_GAM_MINOR 252 55 56 57 + static DEFINE_MUTEX(DAC960_mutex); 58 static DAC960_Controller_T *DAC960_Controllers[DAC960_MaxControllers]; 59 static int DAC960_ControllerCount; 60 static struct proc_dir_entry *DAC960_ProcDirectoryEntry; ··· 81 int drive_nr = (long)disk->private_data; 82 int ret = -ENXIO; 83 84 + mutex_lock(&DAC960_mutex); 85 if (p->FirmwareType == DAC960_V1_Controller) { 86 if (p->V1.LogicalDriveInformation[drive_nr]. 87 LogicalDriveState == DAC960_V1_LogicalDrive_Offline) ··· 99 goto out; 100 ret = 0; 101 out: 102 + mutex_unlock(&DAC960_mutex); 103 return ret; 104 } 105 ··· 6625 long ErrorCode = 0; 6626 if (!capable(CAP_SYS_ADMIN)) return -EACCES; 6627 6628 + mutex_lock(&DAC960_mutex); 6629 switch (Request) 6630 { 6631 case DAC960_IOCTL_GET_CONTROLLER_COUNT: ··· 7056 default: 7057 ErrorCode = -ENOTTY; 7058 } 7059 + mutex_unlock(&DAC960_mutex); 7060 return ErrorCode; 7061 } 7062
+10 -9
drivers/block/amiflop.c
··· 60 #include <linux/hdreg.h> 61 #include <linux/delay.h> 62 #include <linux/init.h> 63 - #include <linux/smp_lock.h> 64 #include <linux/amifdreg.h> 65 #include <linux/amifd.h> 66 #include <linux/buffer_head.h> ··· 109 #define FD_HD_3 0x55555555 /* high-density 3.5" (1760K) drive */ 110 #define FD_DD_5 0xaaaaaaaa /* double-density 5.25" (440K) drive */ 111 112 static unsigned long int fd_def_df0 = FD_DD_3; /* default for df0 if it doesn't identify */ 113 114 module_param(fd_def_df0, ulong, 0); ··· 1507 { 1508 int ret; 1509 1510 - lock_kernel(); 1511 ret = fd_locked_ioctl(bdev, mode, cmd, param); 1512 - unlock_kernel(); 1513 1514 return ret; 1515 } ··· 1556 int old_dev; 1557 unsigned long flags; 1558 1559 - lock_kernel(); 1560 old_dev = fd_device[drive]; 1561 1562 if (fd_ref[drive] && old_dev != system) { 1563 - unlock_kernel(); 1564 return -EBUSY; 1565 } 1566 ··· 1576 rel_fdc(); 1577 1578 if (wrprot) { 1579 - unlock_kernel(); 1580 return -EROFS; 1581 } 1582 } ··· 1595 printk(KERN_INFO "fd%d: accessing %s-disk with %s-layout\n",drive, 1596 unit[drive].type->name, data_types[system].name); 1597 1598 - unlock_kernel(); 1599 return 0; 1600 } 1601 ··· 1604 struct amiga_floppy_struct *p = disk->private_data; 1605 int drive = p - unit; 1606 1607 - lock_kernel(); 1608 if (unit[drive].dirty == 1) { 1609 del_timer (flush_track_timer + drive); 1610 non_int_flush_track (drive); ··· 1618 /* the mod_use counter is handled this way */ 1619 floppy_off (drive | 0x40000000); 1620 #endif 1621 - unlock_kernel(); 1622 return 0; 1623 } 1624
··· 60 #include <linux/hdreg.h> 61 #include <linux/delay.h> 62 #include <linux/init.h> 63 + #include <linux/mutex.h> 64 #include <linux/amifdreg.h> 65 #include <linux/amifd.h> 66 #include <linux/buffer_head.h> ··· 109 #define FD_HD_3 0x55555555 /* high-density 3.5" (1760K) drive */ 110 #define FD_DD_5 0xaaaaaaaa /* double-density 5.25" (440K) drive */ 111 112 + static DEFINE_MUTEX(amiflop_mutex); 113 static unsigned long int fd_def_df0 = FD_DD_3; /* default for df0 if it doesn't identify */ 114 115 module_param(fd_def_df0, ulong, 0); ··· 1506 { 1507 int ret; 1508 1509 + mutex_lock(&amiflop_mutex); 1510 ret = fd_locked_ioctl(bdev, mode, cmd, param); 1511 + mutex_unlock(&amiflop_mutex); 1512 1513 return ret; 1514 } ··· 1555 int old_dev; 1556 unsigned long flags; 1557 1558 + mutex_lock(&amiflop_mutex); 1559 old_dev = fd_device[drive]; 1560 1561 if (fd_ref[drive] && old_dev != system) { 1562 + mutex_unlock(&amiflop_mutex); 1563 return -EBUSY; 1564 } 1565 ··· 1575 rel_fdc(); 1576 1577 if (wrprot) { 1578 + mutex_unlock(&amiflop_mutex); 1579 return -EROFS; 1580 } 1581 } ··· 1594 printk(KERN_INFO "fd%d: accessing %s-disk with %s-layout\n",drive, 1595 unit[drive].type->name, data_types[system].name); 1596 1597 + mutex_unlock(&amiflop_mutex); 1598 return 0; 1599 } 1600 ··· 1603 struct amiga_floppy_struct *p = disk->private_data; 1604 int drive = p - unit; 1605 1606 + mutex_lock(&amiflop_mutex); 1607 if (unit[drive].dirty == 1) { 1608 del_timer (flush_track_timer + drive); 1609 non_int_flush_track (drive); ··· 1617 /* the mod_use counter is handled this way */ 1618 floppy_off (drive | 0x40000000); 1619 #endif 1620 + mutex_unlock(&amiflop_mutex); 1621 return 0; 1622 } 1623
+5 -4
drivers/block/aoe/aoeblk.c
··· 12 #include <linux/slab.h> 13 #include <linux/genhd.h> 14 #include <linux/netdevice.h> 15 - #include <linux/smp_lock.h> 16 #include "aoe.h" 17 18 static struct kmem_cache *buf_pool_cache; 19 20 static ssize_t aoedisk_show_state(struct device *dev, ··· 126 struct aoedev *d = bdev->bd_disk->private_data; 127 ulong flags; 128 129 - lock_kernel(); 130 spin_lock_irqsave(&d->lock, flags); 131 if (d->flags & DEVFL_UP) { 132 d->nopen++; 133 spin_unlock_irqrestore(&d->lock, flags); 134 - unlock_kernel(); 135 return 0; 136 } 137 spin_unlock_irqrestore(&d->lock, flags); 138 - unlock_kernel(); 139 return -ENODEV; 140 } 141
··· 12 #include <linux/slab.h> 13 #include <linux/genhd.h> 14 #include <linux/netdevice.h> 15 + #include <linux/mutex.h> 16 #include "aoe.h" 17 18 + static DEFINE_MUTEX(aoeblk_mutex); 19 static struct kmem_cache *buf_pool_cache; 20 21 static ssize_t aoedisk_show_state(struct device *dev, ··· 125 struct aoedev *d = bdev->bd_disk->private_data; 126 ulong flags; 127 128 + mutex_lock(&aoeblk_mutex); 129 spin_lock_irqsave(&d->lock, flags); 130 if (d->flags & DEVFL_UP) { 131 d->nopen++; 132 spin_unlock_irqrestore(&d->lock, flags); 133 + mutex_unlock(&aoeblk_mutex); 134 return 0; 135 } 136 spin_unlock_irqrestore(&d->lock, flags); 137 + mutex_unlock(&aoeblk_mutex); 138 return -ENODEV; 139 } 140
+5 -4
drivers/block/aoe/aoechr.c
··· 9 #include <linux/completion.h> 10 #include <linux/delay.h> 11 #include <linux/slab.h> 12 - #include <linux/smp_lock.h> 13 #include <linux/skbuff.h> 14 #include "aoe.h" 15 ··· 37 char *msg; 38 }; 39 40 static struct ErrMsg emsgs[NMSG]; 41 static int emsgs_head_idx, emsgs_tail_idx; 42 static struct completion emsgs_comp; ··· 184 { 185 int n, i; 186 187 - lock_kernel(); 188 n = iminor(inode); 189 filp->private_data = (void *) (unsigned long) n; 190 191 for (i = 0; i < ARRAY_SIZE(chardevs); ++i) 192 if (chardevs[i].minor == n) { 193 - unlock_kernel(); 194 return 0; 195 } 196 - unlock_kernel(); 197 return -EINVAL; 198 } 199
··· 9 #include <linux/completion.h> 10 #include <linux/delay.h> 11 #include <linux/slab.h> 12 + #include <linux/mutex.h> 13 #include <linux/skbuff.h> 14 #include "aoe.h" 15 ··· 37 char *msg; 38 }; 39 40 + static DEFINE_MUTEX(aoechr_mutex); 41 static struct ErrMsg emsgs[NMSG]; 42 static int emsgs_head_idx, emsgs_tail_idx; 43 static struct completion emsgs_comp; ··· 183 { 184 int n, i; 185 186 + mutex_lock(&aoechr_mutex); 187 n = iminor(inode); 188 filp->private_data = (void *) (unsigned long) n; 189 190 for (i = 0; i < ARRAY_SIZE(chardevs); ++i) 191 if (chardevs[i].minor == n) { 192 + mutex_unlock(&aoechr_mutex); 193 return 0; 194 } 195 + mutex_unlock(&aoechr_mutex); 196 return -EINVAL; 197 } 198
+8 -7
drivers/block/ataflop.c
··· 67 #include <linux/delay.h> 68 #include <linux/init.h> 69 #include <linux/blkdev.h> 70 - #include <linux/smp_lock.h> 71 72 #include <asm/atafd.h> 73 #include <asm/atafdreg.h> ··· 79 80 #undef DEBUG 81 82 static struct request_queue *floppy_queue; 83 static struct request *fd_request; 84 ··· 1672 { 1673 int ret; 1674 1675 - lock_kernel(); 1676 ret = fd_locked_ioctl(bdev, mode, cmd, arg); 1677 - unlock_kernel(); 1678 1679 return ret; 1680 } ··· 1855 { 1856 int ret; 1857 1858 - lock_kernel(); 1859 ret = floppy_open(bdev, mode); 1860 - unlock_kernel(); 1861 1862 return ret; 1863 } ··· 1865 static int floppy_release(struct gendisk *disk, fmode_t mode) 1866 { 1867 struct atari_floppy_struct *p = disk->private_data; 1868 - lock_kernel(); 1869 if (p->ref < 0) 1870 p->ref = 0; 1871 else if (!p->ref--) { 1872 printk(KERN_ERR "floppy_release with fd_ref == 0"); 1873 p->ref = 0; 1874 } 1875 - unlock_kernel(); 1876 return 0; 1877 } 1878
··· 67 #include <linux/delay.h> 68 #include <linux/init.h> 69 #include <linux/blkdev.h> 70 + #include <linux/mutex.h> 71 72 #include <asm/atafd.h> 73 #include <asm/atafdreg.h> ··· 79 80 #undef DEBUG 81 82 + static DEFINE_MUTEX(ataflop_mutex); 83 static struct request_queue *floppy_queue; 84 static struct request *fd_request; 85 ··· 1671 { 1672 int ret; 1673 1674 + mutex_lock(&ataflop_mutex); 1675 ret = fd_locked_ioctl(bdev, mode, cmd, arg); 1676 + mutex_unlock(&ataflop_mutex); 1677 1678 return ret; 1679 } ··· 1854 { 1855 int ret; 1856 1857 + mutex_lock(&ataflop_mutex); 1858 ret = floppy_open(bdev, mode); 1859 + mutex_unlock(&ataflop_mutex); 1860 1861 return ret; 1862 } ··· 1864 static int floppy_release(struct gendisk *disk, fmode_t mode) 1865 { 1866 struct atari_floppy_struct *p = disk->private_data; 1867 + mutex_lock(&ataflop_mutex); 1868 if (p->ref < 0) 1869 p->ref = 0; 1870 else if (!p->ref--) { 1871 printk(KERN_ERR "floppy_release with fd_ref == 0"); 1872 p->ref = 0; 1873 } 1874 + mutex_unlock(&ataflop_mutex); 1875 return 0; 1876 } 1877
+4 -3
drivers/block/brd.c
··· 15 #include <linux/blkdev.h> 16 #include <linux/bio.h> 17 #include <linux/highmem.h> 18 - #include <linux/smp_lock.h> 19 #include <linux/radix-tree.h> 20 #include <linux/buffer_head.h> /* invalidate_bh_lrus() */ 21 #include <linux/slab.h> ··· 55 /* 56 * Look up and return a brd's page for a given sector. 57 */ 58 static struct page *brd_lookup_page(struct brd_device *brd, sector_t sector) 59 { 60 pgoff_t idx; ··· 403 * ram device BLKFLSBUF has special semantics, we want to actually 404 * release and destroy the ramdisk data. 405 */ 406 - lock_kernel(); 407 mutex_lock(&bdev->bd_mutex); 408 error = -EBUSY; 409 if (bdev->bd_openers <= 1) { ··· 420 error = 0; 421 } 422 mutex_unlock(&bdev->bd_mutex); 423 - unlock_kernel(); 424 425 return error; 426 }
··· 15 #include <linux/blkdev.h> 16 #include <linux/bio.h> 17 #include <linux/highmem.h> 18 + #include <linux/mutex.h> 19 #include <linux/radix-tree.h> 20 #include <linux/buffer_head.h> /* invalidate_bh_lrus() */ 21 #include <linux/slab.h> ··· 55 /* 56 * Look up and return a brd's page for a given sector. 57 */ 58 + static DEFINE_MUTEX(brd_mutex); 59 static struct page *brd_lookup_page(struct brd_device *brd, sector_t sector) 60 { 61 pgoff_t idx; ··· 402 * ram device BLKFLSBUF has special semantics, we want to actually 403 * release and destroy the ramdisk data. 404 */ 405 + mutex_lock(&brd_mutex); 406 mutex_lock(&bdev->bd_mutex); 407 error = -EBUSY; 408 if (bdev->bd_openers <= 1) { ··· 419 error = 0; 420 } 421 mutex_unlock(&bdev->bd_mutex); 422 + mutex_unlock(&brd_mutex); 423 424 return error; 425 }
+7 -7
drivers/block/cciss.c
··· 26 #include <linux/pci.h> 27 #include <linux/kernel.h> 28 #include <linux/slab.h> 29 - #include <linux/smp_lock.h> 30 #include <linux/delay.h> 31 #include <linux/major.h> 32 #include <linux/fs.h> ··· 65 MODULE_VERSION("3.6.26"); 66 MODULE_LICENSE("GPL"); 67 68 static int cciss_allow_hpsa; 69 module_param(cciss_allow_hpsa, int, S_IRUGO|S_IWUSR); 70 MODULE_PARM_DESC(cciss_allow_hpsa, ··· 1059 { 1060 int ret; 1061 1062 - lock_kernel(); 1063 ret = cciss_open(bdev, mode); 1064 - unlock_kernel(); 1065 1066 return ret; 1067 } ··· 1074 ctlr_info_t *h; 1075 drive_info_struct *drv; 1076 1077 - lock_kernel(); 1078 h = get_host(disk); 1079 drv = get_drv(disk); 1080 dev_dbg(&h->pdev->dev, "cciss_release %s\n", disk->disk_name); 1081 drv->usage_count--; 1082 h->usage_count--; 1083 - unlock_kernel(); 1084 return 0; 1085 } 1086 ··· 1088 unsigned cmd, unsigned long arg) 1089 { 1090 int ret; 1091 - lock_kernel(); 1092 ret = cciss_ioctl(bdev, mode, cmd, arg); 1093 - unlock_kernel(); 1094 return ret; 1095 } 1096
··· 26 #include <linux/pci.h> 27 #include <linux/kernel.h> 28 #include <linux/slab.h> 29 #include <linux/delay.h> 30 #include <linux/major.h> 31 #include <linux/fs.h> ··· 66 MODULE_VERSION("3.6.26"); 67 MODULE_LICENSE("GPL"); 68 69 + static DEFINE_MUTEX(cciss_mutex); 70 static int cciss_allow_hpsa; 71 module_param(cciss_allow_hpsa, int, S_IRUGO|S_IWUSR); 72 MODULE_PARM_DESC(cciss_allow_hpsa, ··· 1059 { 1060 int ret; 1061 1062 + mutex_lock(&cciss_mutex); 1063 ret = cciss_open(bdev, mode); 1064 + mutex_unlock(&cciss_mutex); 1065 1066 return ret; 1067 } ··· 1074 ctlr_info_t *h; 1075 drive_info_struct *drv; 1076 1077 + mutex_lock(&cciss_mutex); 1078 h = get_host(disk); 1079 drv = get_drv(disk); 1080 dev_dbg(&h->pdev->dev, "cciss_release %s\n", disk->disk_name); 1081 drv->usage_count--; 1082 h->usage_count--; 1083 + mutex_unlock(&cciss_mutex); 1084 return 0; 1085 } 1086 ··· 1088 unsigned cmd, unsigned long arg) 1089 { 1090 int ret; 1091 + mutex_lock(&cciss_mutex); 1092 ret = cciss_ioctl(bdev, mode, cmd, arg); 1093 + mutex_unlock(&cciss_mutex); 1094 return ret; 1095 } 1096
+8 -7
drivers/block/cpqarray.c
··· 35 #include <linux/seq_file.h> 36 #include <linux/init.h> 37 #include <linux/hdreg.h> 38 - #include <linux/smp_lock.h> 39 #include <linux/spinlock.h> 40 #include <linux/blkdev.h> 41 #include <linux/genhd.h> ··· 68 69 #define CPQARRAY_DMA_MASK 0xFFFFFFFF /* 32 bit DMA */ 70 71 static int nr_ctlr; 72 static ctlr_info_t *hba[MAX_CTLR]; 73 ··· 846 { 847 int ret; 848 849 - lock_kernel(); 850 ret = ida_open(bdev, mode); 851 - unlock_kernel(); 852 853 return ret; 854 } ··· 860 { 861 ctlr_info_t *host; 862 863 - lock_kernel(); 864 host = get_host(disk); 865 host->usage_count--; 866 - unlock_kernel(); 867 868 return 0; 869 } ··· 1218 { 1219 int ret; 1220 1221 - lock_kernel(); 1222 ret = ida_locked_ioctl(bdev, mode, cmd, param); 1223 - unlock_kernel(); 1224 1225 return ret; 1226 }
··· 35 #include <linux/seq_file.h> 36 #include <linux/init.h> 37 #include <linux/hdreg.h> 38 + #include <linux/mutex.h> 39 #include <linux/spinlock.h> 40 #include <linux/blkdev.h> 41 #include <linux/genhd.h> ··· 68 69 #define CPQARRAY_DMA_MASK 0xFFFFFFFF /* 32 bit DMA */ 70 71 + static DEFINE_MUTEX(cpqarray_mutex); 72 static int nr_ctlr; 73 static ctlr_info_t *hba[MAX_CTLR]; 74 ··· 845 { 846 int ret; 847 848 + mutex_lock(&cpqarray_mutex); 849 ret = ida_open(bdev, mode); 850 + mutex_unlock(&cpqarray_mutex); 851 852 return ret; 853 } ··· 859 { 860 ctlr_info_t *host; 861 862 + mutex_lock(&cpqarray_mutex); 863 host = get_host(disk); 864 host->usage_count--; 865 + mutex_unlock(&cpqarray_mutex); 866 867 return 0; 868 } ··· 1217 { 1218 int ret; 1219 1220 + mutex_lock(&cpqarray_mutex); 1221 ret = ida_locked_ioctl(bdev, mode, cmd, param); 1222 + mutex_unlock(&cpqarray_mutex); 1223 1224 return ret; 1225 }
+6 -5
drivers/block/drbd/drbd_main.c
··· 32 #include <asm/types.h> 33 #include <net/sock.h> 34 #include <linux/ctype.h> 35 - #include <linux/smp_lock.h> 36 #include <linux/fs.h> 37 #include <linux/file.h> 38 #include <linux/proc_fs.h> ··· 64 struct completion *done; 65 }; 66 67 int drbdd_init(struct drbd_thread *); 68 int drbd_worker(struct drbd_thread *); 69 int drbd_asender(struct drbd_thread *); ··· 2537 unsigned long flags; 2538 int rv = 0; 2539 2540 - lock_kernel(); 2541 spin_lock_irqsave(&mdev->req_lock, flags); 2542 /* to have a stable mdev->state.role 2543 * and no race with updating open_cnt */ ··· 2552 if (!rv) 2553 mdev->open_cnt++; 2554 spin_unlock_irqrestore(&mdev->req_lock, flags); 2555 - unlock_kernel(); 2556 2557 return rv; 2558 } ··· 2560 static int drbd_release(struct gendisk *gd, fmode_t mode) 2561 { 2562 struct drbd_conf *mdev = gd->private_data; 2563 - lock_kernel(); 2564 mdev->open_cnt--; 2565 - unlock_kernel(); 2566 return 0; 2567 } 2568
··· 32 #include <asm/types.h> 33 #include <net/sock.h> 34 #include <linux/ctype.h> 35 + #include <linux/mutex.h> 36 #include <linux/fs.h> 37 #include <linux/file.h> 38 #include <linux/proc_fs.h> ··· 64 struct completion *done; 65 }; 66 67 + static DEFINE_MUTEX(drbd_main_mutex); 68 int drbdd_init(struct drbd_thread *); 69 int drbd_worker(struct drbd_thread *); 70 int drbd_asender(struct drbd_thread *); ··· 2536 unsigned long flags; 2537 int rv = 0; 2538 2539 + mutex_lock(&drbd_main_mutex); 2540 spin_lock_irqsave(&mdev->req_lock, flags); 2541 /* to have a stable mdev->state.role 2542 * and no race with updating open_cnt */ ··· 2551 if (!rv) 2552 mdev->open_cnt++; 2553 spin_unlock_irqrestore(&mdev->req_lock, flags); 2554 + mutex_unlock(&drbd_main_mutex); 2555 2556 return rv; 2557 } ··· 2559 static int drbd_release(struct gendisk *gd, fmode_t mode) 2560 { 2561 struct drbd_conf *mdev = gd->private_data; 2562 + mutex_lock(&drbd_main_mutex); 2563 mdev->open_cnt--; 2564 + mutex_unlock(&drbd_main_mutex); 2565 return 0; 2566 } 2567
+8 -8
drivers/block/floppy.c
··· 178 #include <linux/slab.h> 179 #include <linux/mm.h> 180 #include <linux/bio.h> 181 - #include <linux/smp_lock.h> 182 #include <linux/string.h> 183 #include <linux/jiffies.h> 184 #include <linux/fcntl.h> ··· 198 * It's been recommended that take about 1/4 of the default speed 199 * in some more extreme cases. 200 */ 201 static int slow_floppy; 202 203 #include <asm/dma.h> ··· 3553 { 3554 int ret; 3555 3556 - lock_kernel(); 3557 ret = fd_locked_ioctl(bdev, mode, cmd, param); 3558 - unlock_kernel(); 3559 3560 return ret; 3561 } ··· 3616 { 3617 int drive = (long)disk->private_data; 3618 3619 - lock_kernel(); 3620 mutex_lock(&open_lock); 3621 if (UDRS->fd_ref < 0) 3622 UDRS->fd_ref = 0; ··· 3627 if (!UDRS->fd_ref) 3628 opened_bdev[drive] = NULL; 3629 mutex_unlock(&open_lock); 3630 - unlock_kernel(); 3631 3632 return 0; 3633 } ··· 3645 int res = -EBUSY; 3646 char *tmp; 3647 3648 - lock_kernel(); 3649 mutex_lock(&open_lock); 3650 old_dev = UDRS->fd_device; 3651 if (opened_bdev[drive] && opened_bdev[drive] != bdev) ··· 3722 goto out; 3723 } 3724 mutex_unlock(&open_lock); 3725 - unlock_kernel(); 3726 return 0; 3727 out: 3728 if (UDRS->fd_ref < 0) ··· 3733 opened_bdev[drive] = NULL; 3734 out2: 3735 mutex_unlock(&open_lock); 3736 - unlock_kernel(); 3737 return res; 3738 } 3739
··· 178 #include <linux/slab.h> 179 #include <linux/mm.h> 180 #include <linux/bio.h> 181 #include <linux/string.h> 182 #include <linux/jiffies.h> 183 #include <linux/fcntl.h> ··· 199 * It's been recommended that take about 1/4 of the default speed 200 * in some more extreme cases. 201 */ 202 + static DEFINE_MUTEX(floppy_mutex); 203 static int slow_floppy; 204 205 #include <asm/dma.h> ··· 3553 { 3554 int ret; 3555 3556 + mutex_lock(&floppy_mutex); 3557 ret = fd_locked_ioctl(bdev, mode, cmd, param); 3558 + mutex_unlock(&floppy_mutex); 3559 3560 return ret; 3561 } ··· 3616 { 3617 int drive = (long)disk->private_data; 3618 3619 + mutex_lock(&floppy_mutex); 3620 mutex_lock(&open_lock); 3621 if (UDRS->fd_ref < 0) 3622 UDRS->fd_ref = 0; ··· 3627 if (!UDRS->fd_ref) 3628 opened_bdev[drive] = NULL; 3629 mutex_unlock(&open_lock); 3630 + mutex_unlock(&floppy_mutex); 3631 3632 return 0; 3633 } ··· 3645 int res = -EBUSY; 3646 char *tmp; 3647 3648 + mutex_lock(&floppy_mutex); 3649 mutex_lock(&open_lock); 3650 old_dev = UDRS->fd_device; 3651 if (opened_bdev[drive] && opened_bdev[drive] != bdev) ··· 3722 goto out; 3723 } 3724 mutex_unlock(&open_lock); 3725 + mutex_unlock(&floppy_mutex); 3726 return 0; 3727 out: 3728 if (UDRS->fd_ref < 0) ··· 3733 opened_bdev[drive] = NULL; 3734 out2: 3735 mutex_unlock(&open_lock); 3736 + mutex_unlock(&floppy_mutex); 3737 return res; 3738 } 3739
+6 -5
drivers/block/loop.c
··· 67 #include <linux/compat.h> 68 #include <linux/suspend.h> 69 #include <linux/freezer.h> 70 - #include <linux/smp_lock.h> 71 #include <linux/writeback.h> 72 #include <linux/buffer_head.h> /* for invalidate_bdev() */ 73 #include <linux/completion.h> ··· 77 78 #include <asm/uaccess.h> 79 80 static LIST_HEAD(loop_devices); 81 static DEFINE_MUTEX(loop_devices_mutex); 82 ··· 1410 { 1411 struct loop_device *lo = bdev->bd_disk->private_data; 1412 1413 - lock_kernel(); 1414 mutex_lock(&lo->lo_ctl_mutex); 1415 lo->lo_refcnt++; 1416 mutex_unlock(&lo->lo_ctl_mutex); 1417 - unlock_kernel(); 1418 1419 return 0; 1420 } ··· 1424 struct loop_device *lo = disk->private_data; 1425 int err; 1426 1427 - lock_kernel(); 1428 mutex_lock(&lo->lo_ctl_mutex); 1429 1430 if (--lo->lo_refcnt) ··· 1449 out: 1450 mutex_unlock(&lo->lo_ctl_mutex); 1451 out_unlocked: 1452 - lock_kernel(); 1453 return 0; 1454 } 1455
··· 67 #include <linux/compat.h> 68 #include <linux/suspend.h> 69 #include <linux/freezer.h> 70 + #include <linux/mutex.h> 71 #include <linux/writeback.h> 72 #include <linux/buffer_head.h> /* for invalidate_bdev() */ 73 #include <linux/completion.h> ··· 77 78 #include <asm/uaccess.h> 79 80 + static DEFINE_MUTEX(loop_mutex); 81 static LIST_HEAD(loop_devices); 82 static DEFINE_MUTEX(loop_devices_mutex); 83 ··· 1409 { 1410 struct loop_device *lo = bdev->bd_disk->private_data; 1411 1412 + mutex_lock(&loop_mutex); 1413 mutex_lock(&lo->lo_ctl_mutex); 1414 lo->lo_refcnt++; 1415 mutex_unlock(&lo->lo_ctl_mutex); 1416 + mutex_unlock(&loop_mutex); 1417 1418 return 0; 1419 } ··· 1423 struct loop_device *lo = disk->private_data; 1424 int err; 1425 1426 + mutex_lock(&loop_mutex); 1427 mutex_lock(&lo->lo_ctl_mutex); 1428 1429 if (--lo->lo_refcnt) ··· 1448 out: 1449 mutex_unlock(&lo->lo_ctl_mutex); 1450 out_unlocked: 1451 + mutex_unlock(&loop_mutex); 1452 return 0; 1453 } 1454
+4 -3
drivers/block/nbd.c
··· 24 #include <linux/errno.h> 25 #include <linux/file.h> 26 #include <linux/ioctl.h> 27 - #include <linux/smp_lock.h> 28 #include <linux/compiler.h> 29 #include <linux/err.h> 30 #include <linux/kernel.h> ··· 53 #define DBG_BLKDEV 0x0100 54 #define DBG_RX 0x0200 55 #define DBG_TX 0x0400 56 static unsigned int debugflags; 57 #endif /* NDEBUG */ 58 ··· 718 dprintk(DBG_IOCTL, "%s: nbd_ioctl cmd=%s(0x%x) arg=%lu\n", 719 lo->disk->disk_name, ioctl_cmd_to_ascii(cmd), cmd, arg); 720 721 - lock_kernel(); 722 mutex_lock(&lo->tx_lock); 723 error = __nbd_ioctl(bdev, lo, cmd, arg); 724 mutex_unlock(&lo->tx_lock); 725 - unlock_kernel(); 726 727 return error; 728 }
··· 24 #include <linux/errno.h> 25 #include <linux/file.h> 26 #include <linux/ioctl.h> 27 + #include <linux/mutex.h> 28 #include <linux/compiler.h> 29 #include <linux/err.h> 30 #include <linux/kernel.h> ··· 53 #define DBG_BLKDEV 0x0100 54 #define DBG_RX 0x0200 55 #define DBG_TX 0x0400 56 + static DEFINE_MUTEX(nbd_mutex); 57 static unsigned int debugflags; 58 #endif /* NDEBUG */ 59 ··· 717 dprintk(DBG_IOCTL, "%s: nbd_ioctl cmd=%s(0x%x) arg=%lu\n", 718 lo->disk->disk_name, ioctl_cmd_to_ascii(cmd), cmd, arg); 719 720 + mutex_lock(&nbd_mutex); 721 mutex_lock(&lo->tx_lock); 722 error = __nbd_ioctl(bdev, lo, cmd, arg); 723 mutex_unlock(&lo->tx_lock); 724 + mutex_unlock(&nbd_mutex); 725 726 return error; 727 }
+8 -7
drivers/block/paride/pcd.c
··· 138 #include <linux/cdrom.h> 139 #include <linux/spinlock.h> 140 #include <linux/blkdev.h> 141 - #include <linux/smp_lock.h> 142 #include <asm/uaccess.h> 143 144 static DEFINE_SPINLOCK(pcd_lock); 145 146 module_param(verbose, bool, 0644); ··· 228 struct pcd_unit *cd = bdev->bd_disk->private_data; 229 int ret; 230 231 - lock_kernel(); 232 ret = cdrom_open(&cd->info, bdev, mode); 233 - unlock_kernel(); 234 235 return ret; 236 } ··· 238 static int pcd_block_release(struct gendisk *disk, fmode_t mode) 239 { 240 struct pcd_unit *cd = disk->private_data; 241 - lock_kernel(); 242 cdrom_release(&cd->info, mode); 243 - unlock_kernel(); 244 return 0; 245 } 246 ··· 250 struct pcd_unit *cd = bdev->bd_disk->private_data; 251 int ret; 252 253 - lock_kernel(); 254 ret = cdrom_ioctl(&cd->info, bdev, mode, cmd, arg); 255 - unlock_kernel(); 256 257 return ret; 258 }
··· 138 #include <linux/cdrom.h> 139 #include <linux/spinlock.h> 140 #include <linux/blkdev.h> 141 + #include <linux/mutex.h> 142 #include <asm/uaccess.h> 143 144 + static DEFINE_MUTEX(pcd_mutex); 145 static DEFINE_SPINLOCK(pcd_lock); 146 147 module_param(verbose, bool, 0644); ··· 227 struct pcd_unit *cd = bdev->bd_disk->private_data; 228 int ret; 229 230 + mutex_lock(&pcd_mutex); 231 ret = cdrom_open(&cd->info, bdev, mode); 232 + mutex_unlock(&pcd_mutex); 233 234 return ret; 235 } ··· 237 static int pcd_block_release(struct gendisk *disk, fmode_t mode) 238 { 239 struct pcd_unit *cd = disk->private_data; 240 + mutex_lock(&pcd_mutex); 241 cdrom_release(&cd->info, mode); 242 + mutex_unlock(&pcd_mutex); 243 return 0; 244 } 245 ··· 249 struct pcd_unit *cd = bdev->bd_disk->private_data; 250 int ret; 251 252 + mutex_lock(&pcd_mutex); 253 ret = cdrom_ioctl(&cd->info, bdev, mode, cmd, arg); 254 + mutex_unlock(&pcd_mutex); 255 256 return ret; 257 }
+8 -7
drivers/block/paride/pd.c
··· 153 #include <linux/blkdev.h> 154 #include <linux/blkpg.h> 155 #include <linux/kernel.h> 156 - #include <linux/smp_lock.h> 157 #include <asm/uaccess.h> 158 #include <linux/workqueue.h> 159 160 static DEFINE_SPINLOCK(pd_lock); 161 162 module_param(verbose, bool, 0); ··· 737 { 738 struct pd_unit *disk = bdev->bd_disk->private_data; 739 740 - lock_kernel(); 741 disk->access++; 742 743 if (disk->removable) { 744 pd_special_command(disk, pd_media_check); 745 pd_special_command(disk, pd_door_lock); 746 } 747 - unlock_kernel(); 748 return 0; 749 } 750 ··· 772 773 switch (cmd) { 774 case CDROMEJECT: 775 - lock_kernel(); 776 if (disk->access == 1) 777 pd_special_command(disk, pd_eject); 778 - unlock_kernel(); 779 return 0; 780 default: 781 return -EINVAL; ··· 786 { 787 struct pd_unit *disk = p->private_data; 788 789 - lock_kernel(); 790 if (!--disk->access && disk->removable) 791 pd_special_command(disk, pd_door_unlock); 792 - unlock_kernel(); 793 794 return 0; 795 }
··· 153 #include <linux/blkdev.h> 154 #include <linux/blkpg.h> 155 #include <linux/kernel.h> 156 + #include <linux/mutex.h> 157 #include <asm/uaccess.h> 158 #include <linux/workqueue.h> 159 160 + static DEFINE_MUTEX(pd_mutex); 161 static DEFINE_SPINLOCK(pd_lock); 162 163 module_param(verbose, bool, 0); ··· 736 { 737 struct pd_unit *disk = bdev->bd_disk->private_data; 738 739 + mutex_lock(&pd_mutex); 740 disk->access++; 741 742 if (disk->removable) { 743 pd_special_command(disk, pd_media_check); 744 pd_special_command(disk, pd_door_lock); 745 } 746 + mutex_unlock(&pd_mutex); 747 return 0; 748 } 749 ··· 771 772 switch (cmd) { 773 case CDROMEJECT: 774 + mutex_lock(&pd_mutex); 775 if (disk->access == 1) 776 pd_special_command(disk, pd_eject); 777 + mutex_unlock(&pd_mutex); 778 return 0; 779 default: 780 return -EINVAL; ··· 785 { 786 struct pd_unit *disk = p->private_data; 787 788 + mutex_lock(&pd_mutex); 789 if (!--disk->access && disk->removable) 790 pd_special_command(disk, pd_door_unlock); 791 + mutex_unlock(&pd_mutex); 792 793 return 0; 794 }
+9 -8
drivers/block/paride/pf.c
··· 152 #include <linux/spinlock.h> 153 #include <linux/blkdev.h> 154 #include <linux/blkpg.h> 155 - #include <linux/smp_lock.h> 156 #include <asm/uaccess.h> 157 158 static DEFINE_SPINLOCK(pf_spin_lock); 159 160 module_param(verbose, bool, 0644); ··· 303 struct pf_unit *pf = bdev->bd_disk->private_data; 304 int ret; 305 306 - lock_kernel(); 307 pf_identify(pf); 308 309 ret = -ENODEV; ··· 319 if (pf->removable) 320 pf_lock(pf, 1); 321 out: 322 - unlock_kernel(); 323 return ret; 324 } 325 ··· 350 351 if (pf->access != 1) 352 return -EBUSY; 353 - lock_kernel(); 354 pf_eject(pf); 355 - unlock_kernel(); 356 357 return 0; 358 } ··· 361 { 362 struct pf_unit *pf = disk->private_data; 363 364 - lock_kernel(); 365 if (pf->access <= 0) { 366 - unlock_kernel(); 367 return -EINVAL; 368 } 369 ··· 372 if (!pf->access && pf->removable) 373 pf_lock(pf, 0); 374 375 - unlock_kernel(); 376 return 0; 377 378 }
··· 152 #include <linux/spinlock.h> 153 #include <linux/blkdev.h> 154 #include <linux/blkpg.h> 155 + #include <linux/mutex.h> 156 #include <asm/uaccess.h> 157 158 + static DEFINE_MUTEX(pf_mutex); 159 static DEFINE_SPINLOCK(pf_spin_lock); 160 161 module_param(verbose, bool, 0644); ··· 302 struct pf_unit *pf = bdev->bd_disk->private_data; 303 int ret; 304 305 + mutex_lock(&pf_mutex); 306 pf_identify(pf); 307 308 ret = -ENODEV; ··· 318 if (pf->removable) 319 pf_lock(pf, 1); 320 out: 321 + mutex_unlock(&pf_mutex); 322 return ret; 323 } 324 ··· 349 350 if (pf->access != 1) 351 return -EBUSY; 352 + mutex_lock(&pf_mutex); 353 pf_eject(pf); 354 + mutex_unlock(&pf_mutex); 355 356 return 0; 357 } ··· 360 { 361 struct pf_unit *pf = disk->private_data; 362 363 + mutex_lock(&pf_mutex); 364 if (pf->access <= 0) { 365 + mutex_unlock(&pf_mutex); 366 return -EINVAL; 367 } 368 ··· 371 if (!pf->access && pf->removable) 372 pf_lock(pf, 0); 373 374 + mutex_unlock(&pf_mutex); 375 return 0; 376 377 }
+4 -3
drivers/block/paride/pg.c
··· 162 #include <linux/pg.h> 163 #include <linux/device.h> 164 #include <linux/sched.h> /* current, TASK_* */ 165 - #include <linux/smp_lock.h> 166 #include <linux/jiffies.h> 167 168 #include <asm/uaccess.h> ··· 193 194 #define ATAPI_IDENTIFY 0x12 195 196 static int pg_open(struct inode *inode, struct file *file); 197 static int pg_release(struct inode *inode, struct file *file); 198 static ssize_t pg_read(struct file *filp, char __user *buf, ··· 519 struct pg *dev = &devices[unit]; 520 int ret = 0; 521 522 - lock_kernel(); 523 if ((unit >= PG_UNITS) || (!dev->present)) { 524 ret = -ENODEV; 525 goto out; ··· 548 file->private_data = dev; 549 550 out: 551 - unlock_kernel(); 552 return ret; 553 } 554
··· 162 #include <linux/pg.h> 163 #include <linux/device.h> 164 #include <linux/sched.h> /* current, TASK_* */ 165 + #include <linux/mutex.h> 166 #include <linux/jiffies.h> 167 168 #include <asm/uaccess.h> ··· 193 194 #define ATAPI_IDENTIFY 0x12 195 196 + static DEFINE_MUTEX(pg_mutex); 197 static int pg_open(struct inode *inode, struct file *file); 198 static int pg_release(struct inode *inode, struct file *file); 199 static ssize_t pg_read(struct file *filp, char __user *buf, ··· 518 struct pg *dev = &devices[unit]; 519 int ret = 0; 520 521 + mutex_lock(&pg_mutex); 522 if ((unit >= PG_UNITS) || (!dev->present)) { 523 ret = -ENODEV; 524 goto out; ··· 547 file->private_data = dev; 548 549 out: 550 + mutex_unlock(&pg_mutex); 551 return ret; 552 } 553
+10 -9
drivers/block/paride/pt.c
··· 146 #include <linux/mtio.h> 147 #include <linux/device.h> 148 #include <linux/sched.h> /* current, TASK_*, schedule_timeout() */ 149 - #include <linux/smp_lock.h> 150 151 #include <asm/uaccess.h> 152 ··· 189 #define ATAPI_MODE_SENSE 0x1a 190 #define ATAPI_LOG_SENSE 0x4d 191 192 static int pt_open(struct inode *inode, struct file *file); 193 static long pt_ioctl(struct file *file, unsigned int cmd, unsigned long arg); 194 static int pt_release(struct inode *inode, struct file *file); ··· 651 struct pt_unit *tape = pt + unit; 652 int err; 653 654 - lock_kernel(); 655 if (unit >= PT_UNITS || (!tape->present)) { 656 - unlock_kernel(); 657 return -ENODEV; 658 } 659 ··· 682 } 683 684 file->private_data = tape; 685 - unlock_kernel(); 686 return 0; 687 688 out: 689 atomic_inc(&tape->available); 690 - unlock_kernel(); 691 return err; 692 } 693 ··· 705 switch (mtop.mt_op) { 706 707 case MTREW: 708 - lock_kernel(); 709 pt_rewind(tape); 710 - unlock_kernel(); 711 return 0; 712 713 case MTWEOF: 714 - lock_kernel(); 715 pt_write_fm(tape); 716 - unlock_kernel(); 717 return 0; 718 719 default:
··· 146 #include <linux/mtio.h> 147 #include <linux/device.h> 148 #include <linux/sched.h> /* current, TASK_*, schedule_timeout() */ 149 + #include <linux/mutex.h> 150 151 #include <asm/uaccess.h> 152 ··· 189 #define ATAPI_MODE_SENSE 0x1a 190 #define ATAPI_LOG_SENSE 0x4d 191 192 + static DEFINE_MUTEX(pt_mutex); 193 static int pt_open(struct inode *inode, struct file *file); 194 static long pt_ioctl(struct file *file, unsigned int cmd, unsigned long arg); 195 static int pt_release(struct inode *inode, struct file *file); ··· 650 struct pt_unit *tape = pt + unit; 651 int err; 652 653 + mutex_lock(&pt_mutex); 654 if (unit >= PT_UNITS || (!tape->present)) { 655 + mutex_unlock(&pt_mutex); 656 return -ENODEV; 657 } 658 ··· 681 } 682 683 file->private_data = tape; 684 + mutex_unlock(&pt_mutex); 685 return 0; 686 687 out: 688 atomic_inc(&tape->available); 689 + mutex_unlock(&pt_mutex); 690 return err; 691 } 692 ··· 704 switch (mtop.mt_op) { 705 706 case MTREW: 707 + mutex_lock(&pt_mutex); 708 pt_rewind(tape); 709 + mutex_unlock(&pt_mutex); 710 return 0; 711 712 case MTWEOF: 713 + mutex_lock(&pt_mutex); 714 pt_write_fm(tape); 715 + mutex_unlock(&pt_mutex); 716 return 0; 717 718 default:
+8 -8
drivers/block/pktcdvd.c
··· 57 #include <linux/seq_file.h> 58 #include <linux/miscdevice.h> 59 #include <linux/freezer.h> 60 - #include <linux/smp_lock.h> 61 #include <linux/mutex.h> 62 #include <linux/slab.h> 63 #include <scsi/scsi_cmnd.h> ··· 85 86 #define ZONE(sector, pd) (((sector) + (pd)->offset) & ~((pd)->settings.size - 1)) 87 88 static struct pktcdvd_device *pkt_devs[MAX_WRITERS]; 89 static struct proc_dir_entry *pkt_proc; 90 static int pktdev_major; ··· 2383 2384 VPRINTK(DRIVER_NAME": entering open\n"); 2385 2386 - lock_kernel(); 2387 mutex_lock(&ctl_mutex); 2388 pd = pkt_find_dev_from_minor(MINOR(bdev->bd_dev)); 2389 if (!pd) { ··· 2411 } 2412 2413 mutex_unlock(&ctl_mutex); 2414 - unlock_kernel(); 2415 return 0; 2416 2417 out_dec: ··· 2419 out: 2420 VPRINTK(DRIVER_NAME": failed open (%d)\n", ret); 2421 mutex_unlock(&ctl_mutex); 2422 - unlock_kernel(); 2423 return ret; 2424 } 2425 ··· 2428 struct pktcdvd_device *pd = disk->private_data; 2429 int ret = 0; 2430 2431 - lock_kernel(); 2432 mutex_lock(&ctl_mutex); 2433 pd->refcnt--; 2434 BUG_ON(pd->refcnt < 0); ··· 2437 pkt_release_dev(pd, flush); 2438 } 2439 mutex_unlock(&ctl_mutex); 2440 - unlock_kernel(); 2441 return ret; 2442 } 2443 ··· 2773 VPRINTK("pkt_ioctl: cmd %x, dev %d:%d\n", cmd, 2774 MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev)); 2775 2776 - lock_kernel(); 2777 switch (cmd) { 2778 case CDROMEJECT: 2779 /* ··· 2798 VPRINTK(DRIVER_NAME": Unknown ioctl for %s (%x)\n", pd->name, cmd); 2799 ret = -ENOTTY; 2800 } 2801 - unlock_kernel(); 2802 2803 return ret; 2804 }
··· 57 #include <linux/seq_file.h> 58 #include <linux/miscdevice.h> 59 #include <linux/freezer.h> 60 #include <linux/mutex.h> 61 #include <linux/slab.h> 62 #include <scsi/scsi_cmnd.h> ··· 86 87 #define ZONE(sector, pd) (((sector) + (pd)->offset) & ~((pd)->settings.size - 1)) 88 89 + static DEFINE_MUTEX(pktcdvd_mutex); 90 static struct pktcdvd_device *pkt_devs[MAX_WRITERS]; 91 static struct proc_dir_entry *pkt_proc; 92 static int pktdev_major; ··· 2383 2384 VPRINTK(DRIVER_NAME": entering open\n"); 2385 2386 + mutex_lock(&pktcdvd_mutex); 2387 mutex_lock(&ctl_mutex); 2388 pd = pkt_find_dev_from_minor(MINOR(bdev->bd_dev)); 2389 if (!pd) { ··· 2411 } 2412 2413 mutex_unlock(&ctl_mutex); 2414 + mutex_unlock(&pktcdvd_mutex); 2415 return 0; 2416 2417 out_dec: ··· 2419 out: 2420 VPRINTK(DRIVER_NAME": failed open (%d)\n", ret); 2421 mutex_unlock(&ctl_mutex); 2422 + mutex_unlock(&pktcdvd_mutex); 2423 return ret; 2424 } 2425 ··· 2428 struct pktcdvd_device *pd = disk->private_data; 2429 int ret = 0; 2430 2431 + mutex_lock(&pktcdvd_mutex); 2432 mutex_lock(&ctl_mutex); 2433 pd->refcnt--; 2434 BUG_ON(pd->refcnt < 0); ··· 2437 pkt_release_dev(pd, flush); 2438 } 2439 mutex_unlock(&ctl_mutex); 2440 + mutex_unlock(&pktcdvd_mutex); 2441 return ret; 2442 } 2443 ··· 2773 VPRINTK("pkt_ioctl: cmd %x, dev %d:%d\n", cmd, 2774 MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev)); 2775 2776 + mutex_lock(&pktcdvd_mutex); 2777 switch (cmd) { 2778 case CDROMEJECT: 2779 /* ··· 2798 VPRINTK(DRIVER_NAME": Unknown ioctl for %s (%x)\n", pd->name, cmd); 2799 ret = -ENOTTY; 2800 } 2801 + mutex_unlock(&pktcdvd_mutex); 2802 2803 return ret; 2804 }
+8 -7
drivers/block/swim.c
··· 20 #include <linux/fd.h> 21 #include <linux/slab.h> 22 #include <linux/blkdev.h> 23 - #include <linux/smp_lock.h> 24 #include <linux/hdreg.h> 25 #include <linux/kernel.h> 26 #include <linux/delay.h> ··· 222 extern int swim_read_sector_data(struct swim __iomem *base, 223 unsigned char *data); 224 225 static inline void set_swim_mode(struct swim __iomem *base, int enable) 226 { 227 struct iwm __iomem *iwm_base; ··· 667 { 668 int ret; 669 670 - lock_kernel(); 671 ret = floppy_open(bdev, mode); 672 - unlock_kernel(); 673 674 return ret; 675 } ··· 679 struct floppy_state *fs = disk->private_data; 680 struct swim __iomem *base = fs->swd->base; 681 682 - lock_kernel(); 683 if (fs->ref_count < 0) 684 fs->ref_count = 0; 685 else if (fs->ref_count > 0) ··· 687 688 if (fs->ref_count == 0) 689 swim_motor(base, OFF); 690 - unlock_kernel(); 691 692 return 0; 693 } ··· 705 case FDEJECT: 706 if (fs->ref_count != 1) 707 return -EBUSY; 708 - lock_kernel(); 709 err = floppy_eject(fs); 710 - unlock_kernel(); 711 return err; 712 713 case FDGETPRM:
··· 20 #include <linux/fd.h> 21 #include <linux/slab.h> 22 #include <linux/blkdev.h> 23 + #include <linux/mutex.h> 24 #include <linux/hdreg.h> 25 #include <linux/kernel.h> 26 #include <linux/delay.h> ··· 222 extern int swim_read_sector_data(struct swim __iomem *base, 223 unsigned char *data); 224 225 + static DEFINE_MUTEX(swim_mutex); 226 static inline void set_swim_mode(struct swim __iomem *base, int enable) 227 { 228 struct iwm __iomem *iwm_base; ··· 666 { 667 int ret; 668 669 + mutex_lock(&swim_mutex); 670 ret = floppy_open(bdev, mode); 671 + mutex_unlock(&swim_mutex); 672 673 return ret; 674 } ··· 678 struct floppy_state *fs = disk->private_data; 679 struct swim __iomem *base = fs->swd->base; 680 681 + mutex_lock(&swim_mutex); 682 if (fs->ref_count < 0) 683 fs->ref_count = 0; 684 else if (fs->ref_count > 0) ··· 686 687 if (fs->ref_count == 0) 688 swim_motor(base, OFF); 689 + mutex_unlock(&swim_mutex); 690 691 return 0; 692 } ··· 704 case FDEJECT: 705 if (fs->ref_count != 1) 706 return -EBUSY; 707 + mutex_lock(&swim_mutex); 708 err = floppy_eject(fs); 709 + mutex_unlock(&swim_mutex); 710 return err; 711 712 case FDGETPRM:
+8 -7
drivers/block/swim3.c
··· 25 #include <linux/ioctl.h> 26 #include <linux/blkdev.h> 27 #include <linux/interrupt.h> 28 - #include <linux/smp_lock.h> 29 #include <linux/module.h> 30 #include <linux/spinlock.h> 31 #include <asm/io.h> ··· 36 #include <asm/machdep.h> 37 #include <asm/pmac_feature.h> 38 39 static struct request_queue *swim3_queue; 40 static struct gendisk *disks[2]; 41 static struct request *fd_req; ··· 874 { 875 int ret; 876 877 - lock_kernel(); 878 ret = floppy_locked_ioctl(bdev, mode, cmd, param); 879 - unlock_kernel(); 880 881 return ret; 882 } ··· 954 { 955 int ret; 956 957 - lock_kernel(); 958 ret = floppy_open(bdev, mode); 959 - unlock_kernel(); 960 961 return ret; 962 } ··· 965 { 966 struct floppy_state *fs = disk->private_data; 967 struct swim3 __iomem *sw = fs->swim3; 968 - lock_kernel(); 969 if (fs->ref_count > 0 && --fs->ref_count == 0) { 970 swim3_action(fs, MOTOR_OFF); 971 out_8(&sw->control_bic, 0xff); 972 swim3_select(fs, RELAX); 973 } 974 - unlock_kernel(); 975 return 0; 976 } 977
··· 25 #include <linux/ioctl.h> 26 #include <linux/blkdev.h> 27 #include <linux/interrupt.h> 28 + #include <linux/mutex.h> 29 #include <linux/module.h> 30 #include <linux/spinlock.h> 31 #include <asm/io.h> ··· 36 #include <asm/machdep.h> 37 #include <asm/pmac_feature.h> 38 39 + static DEFINE_MUTEX(swim3_mutex); 40 static struct request_queue *swim3_queue; 41 static struct gendisk *disks[2]; 42 static struct request *fd_req; ··· 873 { 874 int ret; 875 876 + mutex_lock(&swim3_mutex); 877 ret = floppy_locked_ioctl(bdev, mode, cmd, param); 878 + mutex_unlock(&swim3_mutex); 879 880 return ret; 881 } ··· 953 { 954 int ret; 955 956 + mutex_lock(&swim3_mutex); 957 ret = floppy_open(bdev, mode); 958 + mutex_unlock(&swim3_mutex); 959 960 return ret; 961 } ··· 964 { 965 struct floppy_state *fs = disk->private_data; 966 struct swim3 __iomem *sw = fs->swim3; 967 + mutex_lock(&swim3_mutex); 968 if (fs->ref_count > 0 && --fs->ref_count == 0) { 969 swim3_action(fs, MOTOR_OFF); 970 out_8(&sw->control_bic, 0xff); 971 swim3_select(fs, RELAX); 972 } 973 + mutex_unlock(&swim3_mutex); 974 return 0; 975 } 976
+8 -7
drivers/block/ub.c
··· 28 #include <linux/timer.h> 29 #include <linux/scatterlist.h> 30 #include <linux/slab.h> 31 - #include <linux/smp_lock.h> 32 #include <scsi/scsi.h> 33 34 #define DRV_NAME "ub" ··· 248 spinlock_t lock; 249 }; 250 251 static inline void ub_init_completion(struct ub_completion *x) 252 { 253 x->done = 0; ··· 1716 { 1717 int ret; 1718 1719 - lock_kernel(); 1720 ret = ub_bd_open(bdev, mode); 1721 - unlock_kernel(); 1722 1723 return ret; 1724 } ··· 1731 struct ub_lun *lun = disk->private_data; 1732 struct ub_dev *sc = lun->udev; 1733 1734 - lock_kernel(); 1735 ub_put(sc); 1736 - unlock_kernel(); 1737 1738 return 0; 1739 } ··· 1748 void __user *usermem = (void __user *) arg; 1749 int ret; 1750 1751 - lock_kernel(); 1752 ret = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, usermem); 1753 - unlock_kernel(); 1754 1755 return ret; 1756 }
··· 28 #include <linux/timer.h> 29 #include <linux/scatterlist.h> 30 #include <linux/slab.h> 31 + #include <linux/mutex.h> 32 #include <scsi/scsi.h> 33 34 #define DRV_NAME "ub" ··· 248 spinlock_t lock; 249 }; 250 251 + static DEFINE_MUTEX(ub_mutex); 252 static inline void ub_init_completion(struct ub_completion *x) 253 { 254 x->done = 0; ··· 1715 { 1716 int ret; 1717 1718 + mutex_lock(&ub_mutex); 1719 ret = ub_bd_open(bdev, mode); 1720 + mutex_unlock(&ub_mutex); 1721 1722 return ret; 1723 } ··· 1730 struct ub_lun *lun = disk->private_data; 1731 struct ub_dev *sc = lun->udev; 1732 1733 + mutex_lock(&ub_mutex); 1734 ub_put(sc); 1735 + mutex_unlock(&ub_mutex); 1736 1737 return 0; 1738 } ··· 1747 void __user *usermem = (void __user *) arg; 1748 int ret; 1749 1750 + mutex_lock(&ub_mutex); 1751 ret = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, usermem); 1752 + mutex_unlock(&ub_mutex); 1753 1754 return ret; 1755 }
+6 -5
drivers/block/viodasd.c
··· 41 #include <linux/errno.h> 42 #include <linux/init.h> 43 #include <linux/string.h> 44 - #include <linux/smp_lock.h> 45 #include <linux/dma-mapping.h> 46 #include <linux/completion.h> 47 #include <linux/device.h> ··· 73 MAX_DISK_NAME = FIELD_SIZEOF(struct gendisk, disk_name) 74 }; 75 76 static DEFINE_SPINLOCK(viodasd_spinlock); 77 78 #define VIOMAXREQ 16 ··· 181 { 182 int ret; 183 184 - lock_kernel(); 185 ret = viodasd_open(bdev, mode); 186 - unlock_kernel(); 187 188 return ret; 189 } ··· 197 struct viodasd_device *d = disk->private_data; 198 HvLpEvent_Rc hvrc; 199 200 - lock_kernel(); 201 /* Send the event to OS/400. We DON'T expect a response */ 202 hvrc = HvCallEvent_signalLpEventFast(viopath_hostLp, 203 HvLpEvent_Type_VirtualIo, ··· 211 if (hvrc != 0) 212 pr_warning("HV close call failed %d\n", (int)hvrc); 213 214 - unlock_kernel(); 215 216 return 0; 217 }
··· 41 #include <linux/errno.h> 42 #include <linux/init.h> 43 #include <linux/string.h> 44 + #include <linux/mutex.h> 45 #include <linux/dma-mapping.h> 46 #include <linux/completion.h> 47 #include <linux/device.h> ··· 73 MAX_DISK_NAME = FIELD_SIZEOF(struct gendisk, disk_name) 74 }; 75 76 + static DEFINE_MUTEX(viodasd_mutex); 77 static DEFINE_SPINLOCK(viodasd_spinlock); 78 79 #define VIOMAXREQ 16 ··· 180 { 181 int ret; 182 183 + mutex_lock(&viodasd_mutex); 184 ret = viodasd_open(bdev, mode); 185 + mutex_unlock(&viodasd_mutex); 186 187 return ret; 188 } ··· 196 struct viodasd_device *d = disk->private_data; 197 HvLpEvent_Rc hvrc; 198 199 + mutex_lock(&viodasd_mutex); 200 /* Send the event to OS/400. We DON'T expect a response */ 201 hvrc = HvCallEvent_signalLpEventFast(viopath_hostLp, 202 HvLpEvent_Type_VirtualIo, ··· 210 if (hvrc != 0) 211 pr_warning("HV close call failed %d\n", (int)hvrc); 212 213 + mutex_unlock(&viodasd_mutex); 214 215 return 0; 216 }
+4 -3
drivers/block/xd.c
··· 46 #include <linux/init.h> 47 #include <linux/wait.h> 48 #include <linux/blkdev.h> 49 - #include <linux/smp_lock.h> 50 #include <linux/blkpg.h> 51 #include <linux/delay.h> 52 #include <linux/io.h> ··· 58 59 #include "xd.h" 60 61 static void __init do_xd_setup (int *integers); 62 #ifdef MODULE 63 static int xd[5] = { -1,-1,-1,-1, }; ··· 382 { 383 int ret; 384 385 - lock_kernel(); 386 ret = xd_locked_ioctl(bdev, mode, cmd, param); 387 - unlock_kernel(); 388 389 return ret; 390 }
··· 46 #include <linux/init.h> 47 #include <linux/wait.h> 48 #include <linux/blkdev.h> 49 + #include <linux/mutex.h> 50 #include <linux/blkpg.h> 51 #include <linux/delay.h> 52 #include <linux/io.h> ··· 58 59 #include "xd.h" 60 61 + static DEFINE_MUTEX(xd_mutex); 62 static void __init do_xd_setup (int *integers); 63 #ifdef MODULE 64 static int xd[5] = { -1,-1,-1,-1, }; ··· 381 { 382 int ret; 383 384 + mutex_lock(&xd_mutex); 385 ret = xd_locked_ioctl(bdev, mode, cmd, param); 386 + mutex_unlock(&xd_mutex); 387 388 return ret; 389 }
+6 -5
drivers/block/xen-blkfront.c
··· 41 #include <linux/cdrom.h> 42 #include <linux/module.h> 43 #include <linux/slab.h> 44 - #include <linux/smp_lock.h> 45 #include <linux/scatterlist.h> 46 47 #include <xen/xen.h> ··· 69 unsigned long frame[BLKIF_MAX_SEGMENTS_PER_REQUEST]; 70 }; 71 72 static const struct block_device_operations xlvbd_block_fops; 73 74 #define BLK_RING_SIZE __RING_SIZE((struct blkif_sring *)0, PAGE_SIZE) ··· 1202 struct blkfront_info *info; 1203 int err = 0; 1204 1205 - lock_kernel(); 1206 1207 info = disk->private_data; 1208 if (!info) { ··· 1220 mutex_unlock(&info->mutex); 1221 1222 out: 1223 - unlock_kernel(); 1224 return err; 1225 } 1226 ··· 1230 struct block_device *bdev; 1231 struct xenbus_device *xbdev; 1232 1233 - lock_kernel(); 1234 1235 bdev = bdget_disk(disk, 0); 1236 bdput(bdev); ··· 1264 } 1265 1266 out: 1267 - unlock_kernel(); 1268 return 0; 1269 } 1270
··· 41 #include <linux/cdrom.h> 42 #include <linux/module.h> 43 #include <linux/slab.h> 44 + #include <linux/mutex.h> 45 #include <linux/scatterlist.h> 46 47 #include <xen/xen.h> ··· 69 unsigned long frame[BLKIF_MAX_SEGMENTS_PER_REQUEST]; 70 }; 71 72 + static DEFINE_MUTEX(blkfront_mutex); 73 static const struct block_device_operations xlvbd_block_fops; 74 75 #define BLK_RING_SIZE __RING_SIZE((struct blkif_sring *)0, PAGE_SIZE) ··· 1201 struct blkfront_info *info; 1202 int err = 0; 1203 1204 + mutex_lock(&blkfront_mutex); 1205 1206 info = disk->private_data; 1207 if (!info) { ··· 1219 mutex_unlock(&info->mutex); 1220 1221 out: 1222 + mutex_unlock(&blkfront_mutex); 1223 return err; 1224 } 1225 ··· 1229 struct block_device *bdev; 1230 struct xenbus_device *xbdev; 1231 1232 + mutex_lock(&blkfront_mutex); 1233 1234 bdev = bdget_disk(disk, 0); 1235 bdput(bdev); ··· 1263 } 1264 1265 out: 1266 + mutex_unlock(&blkfront_mutex); 1267 return 0; 1268 } 1269
+6 -5
drivers/block/xsysace.c
··· 89 #include <linux/delay.h> 90 #include <linux/slab.h> 91 #include <linux/blkdev.h> 92 - #include <linux/smp_lock.h> 93 #include <linux/ata.h> 94 #include <linux/hdreg.h> 95 #include <linux/platform_device.h> ··· 214 u16 cf_id[ATA_ID_WORDS]; 215 }; 216 217 static int ace_major; 218 219 /* --------------------------------------------------------------------- ··· 904 905 dev_dbg(ace->dev, "ace_open() users=%i\n", ace->users + 1); 906 907 - lock_kernel(); 908 spin_lock_irqsave(&ace->lock, flags); 909 ace->users++; 910 spin_unlock_irqrestore(&ace->lock, flags); 911 912 check_disk_change(bdev); 913 - unlock_kernel(); 914 915 return 0; 916 } ··· 923 924 dev_dbg(ace->dev, "ace_release() users=%i\n", ace->users - 1); 925 926 - lock_kernel(); 927 spin_lock_irqsave(&ace->lock, flags); 928 ace->users--; 929 if (ace->users == 0) { ··· 931 ace_out(ace, ACE_CTRL, val & ~ACE_CTRL_LOCKREQ); 932 } 933 spin_unlock_irqrestore(&ace->lock, flags); 934 - unlock_kernel(); 935 return 0; 936 } 937
··· 89 #include <linux/delay.h> 90 #include <linux/slab.h> 91 #include <linux/blkdev.h> 92 + #include <linux/mutex.h> 93 #include <linux/ata.h> 94 #include <linux/hdreg.h> 95 #include <linux/platform_device.h> ··· 214 u16 cf_id[ATA_ID_WORDS]; 215 }; 216 217 + static DEFINE_MUTEX(xsysace_mutex); 218 static int ace_major; 219 220 /* --------------------------------------------------------------------- ··· 903 904 dev_dbg(ace->dev, "ace_open() users=%i\n", ace->users + 1); 905 906 + mutex_lock(&xsysace_mutex); 907 spin_lock_irqsave(&ace->lock, flags); 908 ace->users++; 909 spin_unlock_irqrestore(&ace->lock, flags); 910 911 check_disk_change(bdev); 912 + mutex_unlock(&xsysace_mutex); 913 914 return 0; 915 } ··· 922 923 dev_dbg(ace->dev, "ace_release() users=%i\n", ace->users - 1); 924 925 + mutex_lock(&xsysace_mutex); 926 spin_lock_irqsave(&ace->lock, flags); 927 ace->users--; 928 if (ace->users == 0) { ··· 930 ace_out(ace, ACE_CTRL, val & ~ACE_CTRL_LOCKREQ); 931 } 932 spin_unlock_irqrestore(&ace->lock, flags); 933 + mutex_unlock(&xsysace_mutex); 934 return 0; 935 } 936
+8 -7
drivers/block/z2ram.c
··· 33 #include <linux/module.h> 34 #include <linux/blkdev.h> 35 #include <linux/bitops.h> 36 - #include <linux/smp_lock.h> 37 #include <linux/slab.h> 38 39 #include <asm/setup.h> ··· 57 58 #define Z2RAM_CHUNK1024 ( Z2RAM_CHUNKSIZE >> 10 ) 59 60 static u_long *z2ram_map = NULL; 61 static u_long z2ram_size = 0; 62 static int z2_count = 0; ··· 155 156 device = MINOR(bdev->bd_dev); 157 158 - lock_kernel(); 159 if ( current_device != -1 && current_device != device ) 160 { 161 rc = -EBUSY; ··· 297 set_capacity(z2ram_gendisk, z2ram_size >> 9); 298 } 299 300 - unlock_kernel(); 301 return 0; 302 303 err_out_kfree: 304 kfree(z2ram_map); 305 err_out: 306 - unlock_kernel(); 307 return rc; 308 } 309 310 static int 311 z2_release(struct gendisk *disk, fmode_t mode) 312 { 313 - lock_kernel(); 314 if ( current_device == -1 ) { 315 - unlock_kernel(); 316 return 0; 317 } 318 - unlock_kernel(); 319 /* 320 * FIXME: unmap memory 321 */
··· 33 #include <linux/module.h> 34 #include <linux/blkdev.h> 35 #include <linux/bitops.h> 36 + #include <linux/mutex.h> 37 #include <linux/slab.h> 38 39 #include <asm/setup.h> ··· 57 58 #define Z2RAM_CHUNK1024 ( Z2RAM_CHUNKSIZE >> 10 ) 59 60 + static DEFINE_MUTEX(z2ram_mutex); 61 static u_long *z2ram_map = NULL; 62 static u_long z2ram_size = 0; 63 static int z2_count = 0; ··· 154 155 device = MINOR(bdev->bd_dev); 156 157 + mutex_lock(&z2ram_mutex); 158 if ( current_device != -1 && current_device != device ) 159 { 160 rc = -EBUSY; ··· 296 set_capacity(z2ram_gendisk, z2ram_size >> 9); 297 } 298 299 + mutex_unlock(&z2ram_mutex); 300 return 0; 301 302 err_out_kfree: 303 kfree(z2ram_map); 304 err_out: 305 + mutex_unlock(&z2ram_mutex); 306 return rc; 307 } 308 309 static int 310 z2_release(struct gendisk *disk, fmode_t mode) 311 { 312 + mutex_lock(&z2ram_mutex); 313 if ( current_device == -1 ) { 314 + mutex_unlock(&z2ram_mutex); 315 return 0; 316 } 317 + mutex_unlock(&z2ram_mutex); 318 /* 319 * FIXME: unmap memory 320 */
+8 -7
drivers/cdrom/gdrom.c
··· 34 #include <linux/blkdev.h> 35 #include <linux/interrupt.h> 36 #include <linux/device.h> 37 - #include <linux/smp_lock.h> 38 #include <linux/wait.h> 39 #include <linux/workqueue.h> 40 #include <linux/platform_device.h> ··· 81 82 #define GDROM_DEFAULT_TIMEOUT (HZ * 7) 83 84 static const struct { 85 int sense_key; 86 const char * const text; ··· 495 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode) 496 { 497 int ret; 498 - lock_kernel(); 499 ret = cdrom_open(gd.cd_info, bdev, mode); 500 - unlock_kernel(); 501 return ret; 502 } 503 504 static int gdrom_bdops_release(struct gendisk *disk, fmode_t mode) 505 { 506 - lock_kernel(); 507 cdrom_release(gd.cd_info, mode); 508 - unlock_kernel(); 509 return 0; 510 } 511 ··· 519 { 520 int ret; 521 522 - lock_kernel(); 523 ret = cdrom_ioctl(gd.cd_info, bdev, mode, cmd, arg); 524 - unlock_kernel(); 525 526 return ret; 527 }
··· 34 #include <linux/blkdev.h> 35 #include <linux/interrupt.h> 36 #include <linux/device.h> 37 + #include <linux/mutex.h> 38 #include <linux/wait.h> 39 #include <linux/workqueue.h> 40 #include <linux/platform_device.h> ··· 81 82 #define GDROM_DEFAULT_TIMEOUT (HZ * 7) 83 84 + static DEFINE_MUTEX(gdrom_mutex); 85 static const struct { 86 int sense_key; 87 const char * const text; ··· 494 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode) 495 { 496 int ret; 497 + mutex_lock(&gdrom_mutex); 498 ret = cdrom_open(gd.cd_info, bdev, mode); 499 + mutex_unlock(&gdrom_mutex); 500 return ret; 501 } 502 503 static int gdrom_bdops_release(struct gendisk *disk, fmode_t mode) 504 { 505 + mutex_lock(&gdrom_mutex); 506 cdrom_release(gd.cd_info, mode); 507 + mutex_unlock(&gdrom_mutex); 508 return 0; 509 } 510 ··· 518 { 519 int ret; 520 521 + mutex_lock(&gdrom_mutex); 522 ret = cdrom_ioctl(gd.cd_info, bdev, mode, cmd, arg); 523 + mutex_unlock(&gdrom_mutex); 524 525 return ret; 526 }
+8 -7
drivers/cdrom/viocd.c
··· 42 #include <linux/module.h> 43 #include <linux/completion.h> 44 #include <linux/proc_fs.h> 45 - #include <linux/smp_lock.h> 46 #include <linux/seq_file.h> 47 #include <linux/scatterlist.h> 48 ··· 61 */ 62 #define VIOCD_MAX_CD HVMAXARCHITECTEDVIRTUALCDROMS 63 64 static const struct vio_error_entry viocd_err_table[] = { 65 {0x0201, EINVAL, "Invalid Range"}, 66 {0x0202, EINVAL, "Invalid Token"}, ··· 157 struct disk_info *di = bdev->bd_disk->private_data; 158 int ret; 159 160 - lock_kernel(); 161 ret = cdrom_open(&di->viocd_info, bdev, mode); 162 - unlock_kernel(); 163 164 return ret; 165 } ··· 167 static int viocd_blk_release(struct gendisk *disk, fmode_t mode) 168 { 169 struct disk_info *di = disk->private_data; 170 - lock_kernel(); 171 cdrom_release(&di->viocd_info, mode); 172 - unlock_kernel(); 173 return 0; 174 } 175 ··· 179 struct disk_info *di = bdev->bd_disk->private_data; 180 int ret; 181 182 - lock_kernel(); 183 ret = cdrom_ioctl(&di->viocd_info, bdev, mode, cmd, arg); 184 - unlock_kernel(); 185 186 return ret; 187 }
··· 42 #include <linux/module.h> 43 #include <linux/completion.h> 44 #include <linux/proc_fs.h> 45 + #include <linux/mutex.h> 46 #include <linux/seq_file.h> 47 #include <linux/scatterlist.h> 48 ··· 61 */ 62 #define VIOCD_MAX_CD HVMAXARCHITECTEDVIRTUALCDROMS 63 64 + static DEFINE_MUTEX(viocd_mutex); 65 static const struct vio_error_entry viocd_err_table[] = { 66 {0x0201, EINVAL, "Invalid Range"}, 67 {0x0202, EINVAL, "Invalid Token"}, ··· 156 struct disk_info *di = bdev->bd_disk->private_data; 157 int ret; 158 159 + mutex_lock(&viocd_mutex); 160 ret = cdrom_open(&di->viocd_info, bdev, mode); 161 + mutex_unlock(&viocd_mutex); 162 163 return ret; 164 } ··· 166 static int viocd_blk_release(struct gendisk *disk, fmode_t mode) 167 { 168 struct disk_info *di = disk->private_data; 169 + mutex_lock(&viocd_mutex); 170 cdrom_release(&di->viocd_info, mode); 171 + mutex_unlock(&viocd_mutex); 172 return 0; 173 } 174 ··· 178 struct disk_info *di = bdev->bd_disk->private_data; 179 int ret; 180 181 + mutex_lock(&viocd_mutex); 182 ret = cdrom_ioctl(&di->viocd_info, bdev, mode, cmd, arg); 183 + mutex_unlock(&viocd_mutex); 184 185 return ret; 186 }
+6 -5
drivers/char/apm-emulation.c
··· 13 #include <linux/module.h> 14 #include <linux/poll.h> 15 #include <linux/slab.h> 16 - #include <linux/smp_lock.h> 17 #include <linux/proc_fs.h> 18 #include <linux/seq_file.h> 19 #include <linux/miscdevice.h> ··· 126 /* 127 * Local variables 128 */ 129 static atomic_t suspend_acks_pending = ATOMIC_INIT(0); 130 static atomic_t userspace_notification_inhibit = ATOMIC_INIT(0); 131 static int apm_disabled; ··· 275 if (!as->suser || !as->writer) 276 return -EPERM; 277 278 - lock_kernel(); 279 switch (cmd) { 280 case APM_IOC_SUSPEND: 281 mutex_lock(&state_lock); ··· 336 mutex_unlock(&state_lock); 337 break; 338 } 339 - unlock_kernel(); 340 341 return err; 342 } ··· 371 { 372 struct apm_user *as; 373 374 - lock_kernel(); 375 as = kzalloc(sizeof(*as), GFP_KERNEL); 376 if (as) { 377 /* ··· 391 392 filp->private_data = as; 393 } 394 - unlock_kernel(); 395 396 return as ? 0 : -ENOMEM; 397 }
··· 13 #include <linux/module.h> 14 #include <linux/poll.h> 15 #include <linux/slab.h> 16 + #include <linux/mutex.h> 17 #include <linux/proc_fs.h> 18 #include <linux/seq_file.h> 19 #include <linux/miscdevice.h> ··· 126 /* 127 * Local variables 128 */ 129 + static DEFINE_MUTEX(apm_mutex); 130 static atomic_t suspend_acks_pending = ATOMIC_INIT(0); 131 static atomic_t userspace_notification_inhibit = ATOMIC_INIT(0); 132 static int apm_disabled; ··· 274 if (!as->suser || !as->writer) 275 return -EPERM; 276 277 + mutex_lock(&apm_mutex); 278 switch (cmd) { 279 case APM_IOC_SUSPEND: 280 mutex_lock(&state_lock); ··· 335 mutex_unlock(&state_lock); 336 break; 337 } 338 + mutex_unlock(&apm_mutex); 339 340 return err; 341 } ··· 370 { 371 struct apm_user *as; 372 373 + mutex_lock(&apm_mutex); 374 as = kzalloc(sizeof(*as), GFP_KERNEL); 375 if (as) { 376 /* ··· 390 391 filp->private_data = as; 392 } 393 + mutex_unlock(&apm_mutex); 394 395 return as ? 0 : -ENOMEM; 396 }
+5 -4
drivers/char/applicom.c
··· 26 #include <linux/sched.h> 27 #include <linux/slab.h> 28 #include <linux/errno.h> 29 - #include <linux/smp_lock.h> 30 #include <linux/miscdevice.h> 31 #include <linux/pci.h> 32 #include <linux/wait.h> ··· 60 #define PCI_DEVICE_ID_APPLICOM_PCI2000PFB 0x0003 61 #endif 62 63 static char *applicom_pci_devnames[] = { 64 "PCI board", 65 "PCI2000IBS / PCI2000CAN", ··· 708 if (IS_ERR(adgl)) 709 return PTR_ERR(adgl); 710 711 - lock_kernel(); 712 IndexCard = adgl->num_card-1; 713 714 if(cmd != 6 && ((IndexCard >= MAX_BOARD) || !apbs[IndexCard].RamIO)) { ··· 718 warncount--; 719 } 720 kfree(adgl); 721 - unlock_kernel(); 722 return -EINVAL; 723 } 724 ··· 836 } 837 Dummy = readb(apbs[IndexCard].RamIO + VERS); 838 kfree(adgl); 839 - unlock_kernel(); 840 return 0; 841 } 842
··· 26 #include <linux/sched.h> 27 #include <linux/slab.h> 28 #include <linux/errno.h> 29 + #include <linux/mutex.h> 30 #include <linux/miscdevice.h> 31 #include <linux/pci.h> 32 #include <linux/wait.h> ··· 60 #define PCI_DEVICE_ID_APPLICOM_PCI2000PFB 0x0003 61 #endif 62 63 + static DEFINE_MUTEX(ac_mutex); 64 static char *applicom_pci_devnames[] = { 65 "PCI board", 66 "PCI2000IBS / PCI2000CAN", ··· 707 if (IS_ERR(adgl)) 708 return PTR_ERR(adgl); 709 710 + mutex_lock(&ac_mutex); 711 IndexCard = adgl->num_card-1; 712 713 if(cmd != 6 && ((IndexCard >= MAX_BOARD) || !apbs[IndexCard].RamIO)) { ··· 717 warncount--; 718 } 719 kfree(adgl); 720 + mutex_unlock(&ac_mutex); 721 return -EINVAL; 722 } 723 ··· 835 } 836 Dummy = readb(apbs[IndexCard].RamIO + VERS); 837 kfree(adgl); 838 + mutex_unlock(&ac_mutex); 839 return 0; 840 } 841
+8 -7
drivers/char/ds1302.c
··· 20 #include <linux/miscdevice.h> 21 #include <linux/delay.h> 22 #include <linux/bcd.h> 23 - #include <linux/smp_lock.h> 24 #include <linux/uaccess.h> 25 #include <linux/io.h> 26 ··· 32 33 #define RTC_MAJOR_NR 121 /* local major, change later */ 34 35 static const char ds1302_name[] = "ds1302"; 36 37 /* Send 8 bits. */ ··· 165 struct rtc_time rtc_tm; 166 167 memset(&rtc_tm, 0, sizeof (struct rtc_time)); 168 - lock_kernel(); 169 get_rtc_time(&rtc_tm); 170 - unlock_kernel(); 171 if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time))) 172 return -EFAULT; 173 return 0; ··· 219 mon = bin2bcd(mon); 220 yrs = bin2bcd(yrs); 221 222 - lock_kernel(); 223 local_irq_save(flags); 224 CMOS_WRITE(yrs, RTC_YEAR); 225 CMOS_WRITE(mon, RTC_MONTH); ··· 228 CMOS_WRITE(min, RTC_MINUTES); 229 CMOS_WRITE(sec, RTC_SECONDS); 230 local_irq_restore(flags); 231 - unlock_kernel(); 232 233 /* Notice that at this point, the RTC is updated but 234 * the kernel is still running with the old time. ··· 248 if(copy_from_user(&tcs_val, (int*)arg, sizeof(int))) 249 return -EFAULT; 250 251 - lock_kernel(); 252 tcs_val = RTC_TCR_PATTERN | (tcs_val & 0x0F); 253 ds1302_writereg(RTC_TRICKLECHARGER, tcs_val); 254 - unlock_kernel(); 255 return 0; 256 } 257 default:
··· 20 #include <linux/miscdevice.h> 21 #include <linux/delay.h> 22 #include <linux/bcd.h> 23 + #include <linux/mutex.h> 24 #include <linux/uaccess.h> 25 #include <linux/io.h> 26 ··· 32 33 #define RTC_MAJOR_NR 121 /* local major, change later */ 34 35 + static DEFINE_MUTEX(rtc_mutex); 36 static const char ds1302_name[] = "ds1302"; 37 38 /* Send 8 bits. */ ··· 164 struct rtc_time rtc_tm; 165 166 memset(&rtc_tm, 0, sizeof (struct rtc_time)); 167 + mutex_lock(&rtc_mutex); 168 get_rtc_time(&rtc_tm); 169 + mutex_unlock(&rtc_mutex); 170 if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time))) 171 return -EFAULT; 172 return 0; ··· 218 mon = bin2bcd(mon); 219 yrs = bin2bcd(yrs); 220 221 + mutex_lock(&rtc_mutex); 222 local_irq_save(flags); 223 CMOS_WRITE(yrs, RTC_YEAR); 224 CMOS_WRITE(mon, RTC_MONTH); ··· 227 CMOS_WRITE(min, RTC_MINUTES); 228 CMOS_WRITE(sec, RTC_SECONDS); 229 local_irq_restore(flags); 230 + mutex_unlock(&rtc_mutex); 231 232 /* Notice that at this point, the RTC is updated but 233 * the kernel is still running with the old time. ··· 247 if(copy_from_user(&tcs_val, (int*)arg, sizeof(int))) 248 return -EFAULT; 249 250 + mutex_lock(&rtc_mutex); 251 tcs_val = RTC_TCR_PATTERN | (tcs_val & 0x0F); 252 ds1302_writereg(RTC_TRICKLECHARGER, tcs_val); 253 + mutex_unlock(&rtc_mutex); 254 return 0; 255 } 256 default:
+4 -4
drivers/char/ds1620.c
··· 8 #include <linux/proc_fs.h> 9 #include <linux/capability.h> 10 #include <linux/init.h> 11 - #include <linux/smp_lock.h> 12 13 #include <mach/hardware.h> 14 #include <asm/mach-types.h> ··· 34 #define CFG_CPU 2 35 #define CFG_1SHOT 1 36 37 static const char *fan_state[] = { "off", "on", "on (hardwired)" }; 38 39 /* ··· 211 212 static int ds1620_open(struct inode *inode, struct file *file) 213 { 214 - cycle_kernel_lock(); 215 return nonseekable_open(inode, file); 216 } 217 ··· 321 { 322 int ret; 323 324 - lock_kernel(); 325 ret = ds1620_ioctl(file, cmd, arg); 326 - unlock_kernel(); 327 328 return ret; 329 }
··· 8 #include <linux/proc_fs.h> 9 #include <linux/capability.h> 10 #include <linux/init.h> 11 + #include <linux/mutex.h> 12 13 #include <mach/hardware.h> 14 #include <asm/mach-types.h> ··· 34 #define CFG_CPU 2 35 #define CFG_1SHOT 1 36 37 + static DEFINE_MUTEX(ds1620_mutex); 38 static const char *fan_state[] = { "off", "on", "on (hardwired)" }; 39 40 /* ··· 210 211 static int ds1620_open(struct inode *inode, struct file *file) 212 { 213 return nonseekable_open(inode, file); 214 } 215 ··· 321 { 322 int ret; 323 324 + mutex_lock(&ds1620_mutex); 325 ret = ds1620_ioctl(file, cmd, arg); 326 + mutex_unlock(&ds1620_mutex); 327 328 return ret; 329 }
+14 -13
drivers/char/dsp56k.c
··· 32 #include <linux/mm.h> 33 #include <linux/init.h> 34 #include <linux/device.h> 35 - #include <linux/smp_lock.h> 36 #include <linux/firmware.h> 37 #include <linux/platform_device.h> 38 #include <linux/uaccess.h> /* For put_user and get_user */ ··· 94 } \ 95 } 96 97 static struct dsp56k_device { 98 unsigned long in_use; 99 long maxio, timeout; ··· 331 if (len > DSP56K_MAX_BINARY_LENGTH) { 332 return -EINVAL; 333 } 334 - lock_kernel(); 335 r = dsp56k_upload(bin, len); 336 - unlock_kernel(); 337 if (r < 0) { 338 return r; 339 } ··· 343 case DSP56K_SET_TX_WSIZE: 344 if (arg > 4 || arg < 1) 345 return -EINVAL; 346 - lock_kernel(); 347 dsp56k.tx_wsize = (int) arg; 348 - unlock_kernel(); 349 break; 350 case DSP56K_SET_RX_WSIZE: 351 if (arg > 4 || arg < 1) 352 return -EINVAL; 353 - lock_kernel(); 354 dsp56k.rx_wsize = (int) arg; 355 - unlock_kernel(); 356 break; 357 case DSP56K_HOST_FLAGS: 358 { ··· 364 if(get_user(out, &hf->out) < 0) 365 return -EFAULT; 366 367 - lock_kernel(); 368 if ((dir & 0x1) && (out & 0x1)) 369 dsp56k_host_interface.icr |= DSP56K_ICR_HF0; 370 else if (dir & 0x1) ··· 379 if (dsp56k_host_interface.icr & DSP56K_ICR_HF1) status |= 0x2; 380 if (dsp56k_host_interface.isr & DSP56K_ISR_HF2) status |= 0x4; 381 if (dsp56k_host_interface.isr & DSP56K_ISR_HF3) status |= 0x8; 382 - unlock_kernel(); 383 return put_user(status, &hf->status); 384 } 385 case DSP56K_HOST_CMD: 386 if (arg > 31 || arg < 0) 387 return -EINVAL; 388 - lock_kernel(); 389 dsp56k_host_interface.cvr = (u_char)((arg & DSP56K_CVR_HV_MASK) | 390 DSP56K_CVR_HC); 391 - unlock_kernel(); 392 break; 393 default: 394 return -EINVAL; ··· 428 int dev = iminor(inode) & 0x0f; 429 int ret = 0; 430 431 - lock_kernel(); 432 switch(dev) 433 { 434 case DSP56K_DEV_56001: ··· 455 ret = -ENODEV; 456 } 457 out: 458 - unlock_kernel(); 459 return ret; 460 } 461
··· 32 #include <linux/mm.h> 33 #include <linux/init.h> 34 #include <linux/device.h> 35 + #include <linux/mutex.h> 36 #include <linux/firmware.h> 37 #include <linux/platform_device.h> 38 #include <linux/uaccess.h> /* For put_user and get_user */ ··· 94 } \ 95 } 96 97 + static DEFINE_MUTEX(dsp56k_mutex); 98 static struct dsp56k_device { 99 unsigned long in_use; 100 long maxio, timeout; ··· 330 if (len > DSP56K_MAX_BINARY_LENGTH) { 331 return -EINVAL; 332 } 333 + mutex_lock(&dsp56k_mutex); 334 r = dsp56k_upload(bin, len); 335 + mutex_unlock(&dsp56k_mutex); 336 if (r < 0) { 337 return r; 338 } ··· 342 case DSP56K_SET_TX_WSIZE: 343 if (arg > 4 || arg < 1) 344 return -EINVAL; 345 + mutex_lock(&dsp56k_mutex); 346 dsp56k.tx_wsize = (int) arg; 347 + mutex_unlock(&dsp56k_mutex); 348 break; 349 case DSP56K_SET_RX_WSIZE: 350 if (arg > 4 || arg < 1) 351 return -EINVAL; 352 + mutex_lock(&dsp56k_mutex); 353 dsp56k.rx_wsize = (int) arg; 354 + mutex_unlock(&dsp56k_mutex); 355 break; 356 case DSP56K_HOST_FLAGS: 357 { ··· 363 if(get_user(out, &hf->out) < 0) 364 return -EFAULT; 365 366 + mutex_lock(&dsp56k_mutex); 367 if ((dir & 0x1) && (out & 0x1)) 368 dsp56k_host_interface.icr |= DSP56K_ICR_HF0; 369 else if (dir & 0x1) ··· 378 if (dsp56k_host_interface.icr & DSP56K_ICR_HF1) status |= 0x2; 379 if (dsp56k_host_interface.isr & DSP56K_ISR_HF2) status |= 0x4; 380 if (dsp56k_host_interface.isr & DSP56K_ISR_HF3) status |= 0x8; 381 + mutex_unlock(&dsp56k_mutex); 382 return put_user(status, &hf->status); 383 } 384 case DSP56K_HOST_CMD: 385 if (arg > 31 || arg < 0) 386 return -EINVAL; 387 + mutex_lock(&dsp56k_mutex); 388 dsp56k_host_interface.cvr = (u_char)((arg & DSP56K_CVR_HV_MASK) | 389 DSP56K_CVR_HC); 390 + mutex_unlock(&dsp56k_mutex); 391 break; 392 default: 393 return -EINVAL; ··· 427 int dev = iminor(inode) & 0x0f; 428 int ret = 0; 429 430 + mutex_lock(&dsp56k_mutex); 431 switch(dev) 432 { 433 case DSP56K_DEV_56001: ··· 454 ret = -ENODEV; 455 } 456 out: 457 + mutex_unlock(&dsp56k_mutex); 458 return ret; 459 } 460
+4 -4
drivers/char/dtlk.c
··· 57 #include <linux/ioport.h> /* for request_region */ 58 #include <linux/delay.h> /* for loops_per_jiffy */ 59 #include <linux/sched.h> 60 - #include <linux/smp_lock.h> /* cycle_kernel_lock() */ 61 #include <asm/io.h> /* for inb_p, outb_p, inb, outb, etc. */ 62 #include <asm/uaccess.h> /* for get_user, etc. */ 63 #include <linux/wait.h> /* for wait_queue */ ··· 73 #define TRACE_RET ((void) 0) 74 #endif /* TRACING */ 75 76 static void dtlk_timer_tick(unsigned long data); 77 78 static int dtlk_major; ··· 276 switch (cmd) { 277 278 case DTLK_INTERROGATE: 279 - lock_kernel(); 280 sp = dtlk_interrogate(); 281 - unlock_kernel(); 282 if (copy_to_user(argp, sp, sizeof(struct dtlk_settings))) 283 return -EINVAL; 284 return 0; ··· 297 { 298 TRACE_TEXT("(dtlk_open"); 299 300 - cycle_kernel_lock(); 301 nonseekable_open(inode, file); 302 switch (iminor(inode)) { 303 case DTLK_MINOR:
··· 57 #include <linux/ioport.h> /* for request_region */ 58 #include <linux/delay.h> /* for loops_per_jiffy */ 59 #include <linux/sched.h> 60 + #include <linux/mutex.h> 61 #include <asm/io.h> /* for inb_p, outb_p, inb, outb, etc. */ 62 #include <asm/uaccess.h> /* for get_user, etc. */ 63 #include <linux/wait.h> /* for wait_queue */ ··· 73 #define TRACE_RET ((void) 0) 74 #endif /* TRACING */ 75 76 + static DEFINE_MUTEX(dtlk_mutex); 77 static void dtlk_timer_tick(unsigned long data); 78 79 static int dtlk_major; ··· 275 switch (cmd) { 276 277 case DTLK_INTERROGATE: 278 + mutex_lock(&dtlk_mutex); 279 sp = dtlk_interrogate(); 280 + mutex_unlock(&dtlk_mutex); 281 if (copy_to_user(argp, sp, sizeof(struct dtlk_settings))) 282 return -EINVAL; 283 return 0; ··· 296 { 297 TRACE_TEXT("(dtlk_open"); 298 299 nonseekable_open(inode, file); 300 switch (iminor(inode)) { 301 case DTLK_MINOR:
+4 -3
drivers/char/generic_nvram.c
··· 19 #include <linux/miscdevice.h> 20 #include <linux/fcntl.h> 21 #include <linux/init.h> 22 - #include <linux/smp_lock.h> 23 #include <asm/uaccess.h> 24 #include <asm/nvram.h> 25 #ifdef CONFIG_PPC_PMAC ··· 28 29 #define NVRAM_SIZE 8192 30 31 static ssize_t nvram_len; 32 33 static loff_t nvram_llseek(struct file *file, loff_t offset, int origin) ··· 121 { 122 int ret; 123 124 - lock_kernel(); 125 ret = nvram_ioctl(file, cmd, arg); 126 - unlock_kernel(); 127 128 return ret; 129 }
··· 19 #include <linux/miscdevice.h> 20 #include <linux/fcntl.h> 21 #include <linux/init.h> 22 + #include <linux/mutex.h> 23 #include <asm/uaccess.h> 24 #include <asm/nvram.h> 25 #ifdef CONFIG_PPC_PMAC ··· 28 29 #define NVRAM_SIZE 8192 30 31 + static DEFINE_MUTEX(nvram_mutex); 32 static ssize_t nvram_len; 33 34 static loff_t nvram_llseek(struct file *file, loff_t offset, int origin) ··· 120 { 121 int ret; 122 123 + mutex_lock(&nvram_mutex); 124 ret = nvram_ioctl(file, cmd, arg); 125 + mutex_unlock(&nvram_mutex); 126 127 return ret; 128 }
+7 -6
drivers/char/genrtc.c
··· 52 #include <linux/init.h> 53 #include <linux/poll.h> 54 #include <linux/proc_fs.h> 55 - #include <linux/smp_lock.h> 56 #include <linux/workqueue.h> 57 58 #include <asm/uaccess.h> ··· 66 * ioctls. 67 */ 68 69 static DECLARE_WAIT_QUEUE_HEAD(gen_rtc_wait); 70 71 /* ··· 338 { 339 int ret; 340 341 - lock_kernel(); 342 ret = gen_rtc_ioctl(file, cmd, arg); 343 - unlock_kernel(); 344 345 return ret; 346 } ··· 353 354 static int gen_rtc_open(struct inode *inode, struct file *file) 355 { 356 - lock_kernel(); 357 if (gen_rtc_status & RTC_IS_OPEN) { 358 - unlock_kernel(); 359 return -EBUSY; 360 } 361 362 gen_rtc_status |= RTC_IS_OPEN; 363 gen_rtc_irq_data = 0; 364 irq_active = 0; 365 - unlock_kernel(); 366 367 return 0; 368 }
··· 52 #include <linux/init.h> 53 #include <linux/poll.h> 54 #include <linux/proc_fs.h> 55 + #include <linux/mutex.h> 56 #include <linux/workqueue.h> 57 58 #include <asm/uaccess.h> ··· 66 * ioctls. 67 */ 68 69 + static DEFINE_MUTEX(gen_rtc_mutex); 70 static DECLARE_WAIT_QUEUE_HEAD(gen_rtc_wait); 71 72 /* ··· 337 { 338 int ret; 339 340 + mutex_lock(&gen_rtc_mutex); 341 ret = gen_rtc_ioctl(file, cmd, arg); 342 + mutex_unlock(&gen_rtc_mutex); 343 344 return ret; 345 } ··· 352 353 static int gen_rtc_open(struct inode *inode, struct file *file) 354 { 355 + mutex_lock(&gen_rtc_mutex); 356 if (gen_rtc_status & RTC_IS_OPEN) { 357 + mutex_unlock(&gen_rtc_mutex); 358 return -EBUSY; 359 } 360 361 gen_rtc_status |= RTC_IS_OPEN; 362 gen_rtc_irq_data = 0; 363 irq_active = 0; 364 + mutex_unlock(&gen_rtc_mutex); 365 366 return 0; 367 }
+4 -3
drivers/char/i8k.c
··· 23 #include <linux/seq_file.h> 24 #include <linux/dmi.h> 25 #include <linux/capability.h> 26 - #include <linux/smp_lock.h> 27 #include <asm/uaccess.h> 28 #include <asm/io.h> 29 ··· 56 57 #define I8K_TEMPERATURE_BUG 1 58 59 static char bios_version[4]; 60 61 MODULE_AUTHOR("Massimo Dal Zotto (dz@debian.org)"); ··· 400 { 401 long ret; 402 403 - lock_kernel(); 404 ret = i8k_ioctl_unlocked(fp, cmd, arg); 405 - unlock_kernel(); 406 407 return ret; 408 }
··· 23 #include <linux/seq_file.h> 24 #include <linux/dmi.h> 25 #include <linux/capability.h> 26 + #include <linux/mutex.h> 27 #include <asm/uaccess.h> 28 #include <asm/io.h> 29 ··· 56 57 #define I8K_TEMPERATURE_BUG 1 58 59 + static DEFINE_MUTEX(i8k_mutex); 60 static char bios_version[4]; 61 62 MODULE_AUTHOR("Massimo Dal Zotto (dz@debian.org)"); ··· 399 { 400 long ret; 401 402 + mutex_lock(&i8k_mutex); 403 ret = i8k_ioctl_unlocked(fp, cmd, arg); 404 + mutex_unlock(&i8k_mutex); 405 406 return ret; 407 }
+4 -4
drivers/char/ip2/ip2main.c
··· 98 #include <linux/major.h> 99 #include <linux/wait.h> 100 #include <linux/device.h> 101 - #include <linux/smp_lock.h> 102 #include <linux/firmware.h> 103 #include <linux/platform_device.h> 104 ··· 138 #include <linux/proc_fs.h> 139 #include <linux/seq_file.h> 140 141 static const struct file_operations ip2mem_proc_fops; 142 static const struct file_operations ip2_proc_fops; 143 ··· 2898 printk (KERN_DEBUG "IP2IPL: ioctl cmd %d, arg %ld\n", cmd, arg ); 2899 #endif 2900 2901 - lock_kernel(); 2902 2903 switch ( iplminor ) { 2904 case 0: // IPL device ··· 2962 rc = -ENODEV; 2963 break; 2964 } 2965 - unlock_kernel(); 2966 return rc; 2967 } 2968 ··· 2983 #ifdef IP2DEBUG_IPL 2984 printk (KERN_DEBUG "IP2IPL: open\n" ); 2985 #endif 2986 - cycle_kernel_lock(); 2987 return 0; 2988 } 2989
··· 98 #include <linux/major.h> 99 #include <linux/wait.h> 100 #include <linux/device.h> 101 + #include <linux/mutex.h> 102 #include <linux/firmware.h> 103 #include <linux/platform_device.h> 104 ··· 138 #include <linux/proc_fs.h> 139 #include <linux/seq_file.h> 140 141 + static DEFINE_MUTEX(ip2_mutex); 142 static const struct file_operations ip2mem_proc_fops; 143 static const struct file_operations ip2_proc_fops; 144 ··· 2897 printk (KERN_DEBUG "IP2IPL: ioctl cmd %d, arg %ld\n", cmd, arg ); 2898 #endif 2899 2900 + mutex_lock(&ip2_mutex); 2901 2902 switch ( iplminor ) { 2903 case 0: // IPL device ··· 2961 rc = -ENODEV; 2962 break; 2963 } 2964 + mutex_unlock(&ip2_mutex); 2965 return rc; 2966 } 2967 ··· 2982 #ifdef IP2DEBUG_IPL 2983 printk (KERN_DEBUG "IP2IPL: open\n" ); 2984 #endif 2985 return 0; 2986 } 2987
+7 -7
drivers/char/ipmi/ipmi_devintf.c
··· 44 #include <linux/init.h> 45 #include <linux/device.h> 46 #include <linux/compat.h> 47 - #include <linux/smp_lock.h> 48 49 struct ipmi_file_private 50 { ··· 58 unsigned int default_retry_time_ms; 59 }; 60 61 static void file_receive_handler(struct ipmi_recv_msg *msg, 62 void *handler_data) 63 { ··· 102 struct ipmi_file_private *priv = file->private_data; 103 int result; 104 105 - lock_kernel(); /* could race against open() otherwise */ 106 result = fasync_helper(fd, file, on, &priv->fasync_queue); 107 - unlock_kernel(); 108 109 return (result); 110 } ··· 125 if (!priv) 126 return -ENOMEM; 127 128 - lock_kernel(); 129 priv->file = file; 130 131 rv = ipmi_create_user(if_num, ··· 150 priv->default_retry_time_ms = 0; 151 152 out: 153 - unlock_kernel(); 154 return rv; 155 } 156 ··· 639 { 640 int ret; 641 642 - lock_kernel(); 643 ret = ipmi_ioctl(file, cmd, data); 644 - unlock_kernel(); 645 646 return ret; 647 }
··· 44 #include <linux/init.h> 45 #include <linux/device.h> 46 #include <linux/compat.h> 47 48 struct ipmi_file_private 49 { ··· 59 unsigned int default_retry_time_ms; 60 }; 61 62 + static DEFINE_MUTEX(ipmi_mutex); 63 static void file_receive_handler(struct ipmi_recv_msg *msg, 64 void *handler_data) 65 { ··· 102 struct ipmi_file_private *priv = file->private_data; 103 int result; 104 105 + mutex_lock(&ipmi_mutex); /* could race against open() otherwise */ 106 result = fasync_helper(fd, file, on, &priv->fasync_queue); 107 + mutex_unlock(&ipmi_mutex); 108 109 return (result); 110 } ··· 125 if (!priv) 126 return -ENOMEM; 127 128 + mutex_lock(&ipmi_mutex); 129 priv->file = file; 130 131 rv = ipmi_create_user(if_num, ··· 150 priv->default_retry_time_ms = 0; 151 152 out: 153 + mutex_unlock(&ipmi_mutex); 154 return rv; 155 } 156 ··· 639 { 640 int ret; 641 642 + mutex_lock(&ipmi_mutex); 643 ret = ipmi_ioctl(file, cmd, data); 644 + mutex_unlock(&ipmi_mutex); 645 646 return ret; 647 }
+4 -4
drivers/char/ipmi/ipmi_watchdog.c
··· 35 #include <linux/moduleparam.h> 36 #include <linux/ipmi.h> 37 #include <linux/ipmi_smi.h> 38 - #include <linux/smp_lock.h> 39 #include <linux/watchdog.h> 40 #include <linux/miscdevice.h> 41 #include <linux/init.h> ··· 149 #define WDIOC_GET_PRETIMEOUT _IOW(WATCHDOG_IOCTL_BASE, 22, int) 150 #endif 151 152 static int nowayout = WATCHDOG_NOWAYOUT; 153 154 static ipmi_user_t watchdog_user; ··· 749 { 750 int ret; 751 752 - lock_kernel(); 753 ret = ipmi_ioctl(file, cmd, arg); 754 - unlock_kernel(); 755 756 return ret; 757 } ··· 845 if (test_and_set_bit(0, &ipmi_wdog_open)) 846 return -EBUSY; 847 848 - cycle_kernel_lock(); 849 850 /* 851 * Don't start the timer now, let it start on the
··· 35 #include <linux/moduleparam.h> 36 #include <linux/ipmi.h> 37 #include <linux/ipmi_smi.h> 38 + #include <linux/mutex.h> 39 #include <linux/watchdog.h> 40 #include <linux/miscdevice.h> 41 #include <linux/init.h> ··· 149 #define WDIOC_GET_PRETIMEOUT _IOW(WATCHDOG_IOCTL_BASE, 22, int) 150 #endif 151 152 + static DEFINE_MUTEX(ipmi_watchdog_mutex); 153 static int nowayout = WATCHDOG_NOWAYOUT; 154 155 static ipmi_user_t watchdog_user; ··· 748 { 749 int ret; 750 751 + mutex_lock(&ipmi_watchdog_mutex); 752 ret = ipmi_ioctl(file, cmd, arg); 753 + mutex_unlock(&ipmi_watchdog_mutex); 754 755 return ret; 756 } ··· 844 if (test_and_set_bit(0, &ipmi_wdog_open)) 845 return -EBUSY; 846 847 848 /* 849 * Don't start the timer now, let it start on the
+8 -7
drivers/char/lp.c
··· 126 #include <linux/device.h> 127 #include <linux/wait.h> 128 #include <linux/jiffies.h> 129 - #include <linux/smp_lock.h> 130 #include <linux/compat.h> 131 132 #include <linux/parport.h> ··· 140 /* if you have more than 8 printers, remember to increase LP_NO */ 141 #define LP_NO 8 142 143 static struct lp_struct lp_table[LP_NO]; 144 145 static unsigned int lp_count = 0; ··· 494 unsigned int minor = iminor(inode); 495 int ret = 0; 496 497 - lock_kernel(); 498 if (minor >= LP_NO) { 499 ret = -ENXIO; 500 goto out; ··· 555 lp_release_parport (&lp_table[minor]); 556 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT; 557 out: 558 - unlock_kernel(); 559 return ret; 560 } 561 ··· 681 int ret; 682 683 minor = iminor(file->f_path.dentry->d_inode); 684 - lock_kernel(); 685 switch (cmd) { 686 case LPSETTIMEOUT: 687 if (copy_from_user(&par_timeout, (void __user *)arg, ··· 695 ret = lp_do_ioctl(minor, cmd, arg, (void __user *)arg); 696 break; 697 } 698 - unlock_kernel(); 699 700 return ret; 701 } ··· 710 int ret; 711 712 minor = iminor(file->f_path.dentry->d_inode); 713 - lock_kernel(); 714 switch (cmd) { 715 case LPSETTIMEOUT: 716 tc = compat_ptr(arg); ··· 731 ret = lp_do_ioctl(minor, cmd, arg, compat_ptr(arg)); 732 break; 733 } 734 - unlock_kernel(); 735 736 return ret; 737 }
··· 126 #include <linux/device.h> 127 #include <linux/wait.h> 128 #include <linux/jiffies.h> 129 + #include <linux/mutex.h> 130 #include <linux/compat.h> 131 132 #include <linux/parport.h> ··· 140 /* if you have more than 8 printers, remember to increase LP_NO */ 141 #define LP_NO 8 142 143 + static DEFINE_MUTEX(lp_mutex); 144 static struct lp_struct lp_table[LP_NO]; 145 146 static unsigned int lp_count = 0; ··· 493 unsigned int minor = iminor(inode); 494 int ret = 0; 495 496 + mutex_lock(&lp_mutex); 497 if (minor >= LP_NO) { 498 ret = -ENXIO; 499 goto out; ··· 554 lp_release_parport (&lp_table[minor]); 555 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT; 556 out: 557 + mutex_unlock(&lp_mutex); 558 return ret; 559 } 560 ··· 680 int ret; 681 682 minor = iminor(file->f_path.dentry->d_inode); 683 + mutex_lock(&lp_mutex); 684 switch (cmd) { 685 case LPSETTIMEOUT: 686 if (copy_from_user(&par_timeout, (void __user *)arg, ··· 694 ret = lp_do_ioctl(minor, cmd, arg, (void __user *)arg); 695 break; 696 } 697 + mutex_unlock(&lp_mutex); 698 699 return ret; 700 } ··· 709 int ret; 710 711 minor = iminor(file->f_path.dentry->d_inode); 712 + mutex_lock(&lp_mutex); 713 switch (cmd) { 714 case LPSETTIMEOUT: 715 tc = compat_ptr(arg); ··· 730 ret = lp_do_ioctl(minor, cmd, arg, compat_ptr(arg)); 731 break; 732 } 733 + mutex_unlock(&lp_mutex); 734 735 return ret; 736 }
+4 -4
drivers/char/mbcs.c
··· 25 #include <linux/mm.h> 26 #include <linux/uio.h> 27 #include <linux/mutex.h> 28 - #include <linux/smp_lock.h> 29 #include <linux/slab.h> 30 #include <asm/io.h> 31 #include <asm/uaccess.h> ··· 41 #else 42 #define DBG(fmt...) 43 #endif 44 static int mbcs_major; 45 46 static LIST_HEAD(soft_list); ··· 385 struct mbcs_soft *soft; 386 int minor; 387 388 - lock_kernel(); 389 minor = iminor(ip); 390 391 /* Nothing protects access to this list... */ 392 list_for_each_entry(soft, &soft_list, list) { 393 if (soft->nasid == minor) { 394 fp->private_data = soft->cxdev; 395 - unlock_kernel(); 396 return 0; 397 } 398 } 399 400 - unlock_kernel(); 401 return -ENODEV; 402 } 403
··· 25 #include <linux/mm.h> 26 #include <linux/uio.h> 27 #include <linux/mutex.h> 28 #include <linux/slab.h> 29 #include <asm/io.h> 30 #include <asm/uaccess.h> ··· 42 #else 43 #define DBG(fmt...) 44 #endif 45 + static DEFINE_MUTEX(mbcs_mutex); 46 static int mbcs_major; 47 48 static LIST_HEAD(soft_list); ··· 385 struct mbcs_soft *soft; 386 int minor; 387 388 + mutex_lock(&mbcs_mutex); 389 minor = iminor(ip); 390 391 /* Nothing protects access to this list... */ 392 list_for_each_entry(soft, &soft_list, list) { 393 if (soft->nasid == minor) { 394 fp->private_data = soft->cxdev; 395 + mutex_unlock(&mbcs_mutex); 396 return 0; 397 } 398 } 399 400 + mutex_unlock(&mbcs_mutex); 401 return -ENODEV; 402 } 403
+4 -3
drivers/char/mmtimer.c
··· 32 #include <linux/interrupt.h> 33 #include <linux/time.h> 34 #include <linux/math64.h> 35 - #include <linux/smp_lock.h> 36 #include <linux/slab.h> 37 38 #include <asm/uaccess.h> ··· 59 60 #define rtc_time() (*RTC_COUNTER_ADDR) 61 62 static long mmtimer_ioctl(struct file *file, unsigned int cmd, 63 unsigned long arg); 64 static int mmtimer_mmap(struct file *file, struct vm_area_struct *vma); ··· 372 { 373 int ret = 0; 374 375 - lock_kernel(); 376 377 switch (cmd) { 378 case MMTIMER_GETOFFSET: /* offset of the counter */ ··· 415 ret = -ENOTTY; 416 break; 417 } 418 - unlock_kernel(); 419 return ret; 420 } 421
··· 32 #include <linux/interrupt.h> 33 #include <linux/time.h> 34 #include <linux/math64.h> 35 + #include <linux/mutex.h> 36 #include <linux/slab.h> 37 38 #include <asm/uaccess.h> ··· 59 60 #define rtc_time() (*RTC_COUNTER_ADDR) 61 62 + static DEFINE_MUTEX(mmtimer_mutex); 63 static long mmtimer_ioctl(struct file *file, unsigned int cmd, 64 unsigned long arg); 65 static int mmtimer_mmap(struct file *file, struct vm_area_struct *vma); ··· 371 { 372 int ret = 0; 373 374 + mutex_lock(&mmtimer_mutex); 375 376 switch (cmd) { 377 case MMTIMER_GETOFFSET: /* offset of the counter */ ··· 414 ret = -ENOTTY; 415 break; 416 } 417 + mutex_unlock(&mmtimer_mutex); 418 return ret; 419 } 420
+22 -22
drivers/char/mwave/mwavedd.c
··· 56 #include <linux/serial.h> 57 #include <linux/sched.h> 58 #include <linux/spinlock.h> 59 - #include <linux/smp_lock.h> 60 #include <linux/delay.h> 61 #include <linux/serial_8250.h> 62 #include "smapi.h" ··· 73 * checks are made against other devices (ie. superio) for conflicts. 74 * We'll depend on users using the tpctl utility to do that for now 75 */ 76 int mwave_debug = 0; 77 int mwave_3780i_irq = 0; 78 int mwave_3780i_io = 0; ··· 102 PRINTK_2(TRACE_MWAVE, 103 "mwavedd::mwave_open, exit return retval %x\n", retval); 104 105 - cycle_kernel_lock(); 106 return retval; 107 } 108 ··· 136 PRINTK_1(TRACE_MWAVE, 137 "mwavedd::mwave_ioctl, IOCTL_MW_RESET" 138 " calling tp3780I_ResetDSP\n"); 139 - lock_kernel(); 140 retval = tp3780I_ResetDSP(&pDrvData->rBDData); 141 - unlock_kernel(); 142 PRINTK_2(TRACE_MWAVE, 143 "mwavedd::mwave_ioctl, IOCTL_MW_RESET" 144 " retval %x from tp3780I_ResetDSP\n", ··· 149 PRINTK_1(TRACE_MWAVE, 150 "mwavedd::mwave_ioctl, IOCTL_MW_RUN" 151 " calling tp3780I_StartDSP\n"); 152 - lock_kernel(); 153 retval = tp3780I_StartDSP(&pDrvData->rBDData); 154 - unlock_kernel(); 155 PRINTK_2(TRACE_MWAVE, 156 "mwavedd::mwave_ioctl, IOCTL_MW_RUN" 157 " retval %x from tp3780I_StartDSP\n", ··· 165 "mwavedd::mwave_ioctl," 166 " IOCTL_MW_DSP_ABILITIES calling" 167 " tp3780I_QueryAbilities\n"); 168 - lock_kernel(); 169 retval = tp3780I_QueryAbilities(&pDrvData->rBDData, 170 &rAbilities); 171 - unlock_kernel(); 172 PRINTK_2(TRACE_MWAVE, 173 "mwavedd::mwave_ioctl, IOCTL_MW_DSP_ABILITIES" 174 " retval %x from tp3780I_QueryAbilities\n", ··· 199 "mwavedd::mwave_ioctl IOCTL_MW_READ_DATA," 200 " size %lx, ioarg %lx pusBuffer %p\n", 201 rReadData.ulDataLength, ioarg, pusBuffer); 202 - lock_kernel(); 203 retval = tp3780I_ReadWriteDspDStore(&pDrvData->rBDData, 204 iocmd, 205 pusBuffer, 206 rReadData.ulDataLength, 207 rReadData.usDspAddress); 208 - unlock_kernel(); 209 } 210 break; 211 ··· 223 " size %lx, ioarg %lx pusBuffer %p\n", 224 rReadData.ulDataLength / 2, ioarg, 225 pusBuffer); 226 - lock_kernel(); 227 retval = tp3780I_ReadWriteDspDStore(&pDrvData->rBDData, 228 iocmd, pusBuffer, 229 rReadData.ulDataLength / 2, 230 rReadData.usDspAddress); 231 - unlock_kernel(); 232 } 233 break; 234 ··· 246 " size %lx, ioarg %lx pusBuffer %p\n", 247 rWriteData.ulDataLength, ioarg, 248 pusBuffer); 249 - lock_kernel(); 250 retval = tp3780I_ReadWriteDspDStore(&pDrvData->rBDData, 251 iocmd, pusBuffer, 252 rWriteData.ulDataLength, 253 rWriteData.usDspAddress); 254 - unlock_kernel(); 255 } 256 break; 257 ··· 269 " size %lx, ioarg %lx pusBuffer %p\n", 270 rWriteData.ulDataLength, ioarg, 271 pusBuffer); 272 - lock_kernel(); 273 retval = tp3780I_ReadWriteDspIStore(&pDrvData->rBDData, 274 iocmd, pusBuffer, 275 rWriteData.ulDataLength, 276 rWriteData.usDspAddress); 277 - unlock_kernel(); 278 } 279 break; 280 ··· 295 ipcnum, 296 pDrvData->IPCs[ipcnum].usIntCount); 297 298 - lock_kernel(); 299 pDrvData->IPCs[ipcnum].bIsHere = FALSE; 300 pDrvData->IPCs[ipcnum].bIsEnabled = TRUE; 301 - unlock_kernel(); 302 303 PRINTK_2(TRACE_MWAVE, 304 "mwavedd::mwave_ioctl IOCTL_MW_REGISTER_IPC" ··· 323 ipcnum, 324 pDrvData->IPCs[ipcnum].usIntCount); 325 326 - lock_kernel(); 327 if (pDrvData->IPCs[ipcnum].bIsEnabled == TRUE) { 328 DECLARE_WAITQUEUE(wait, current); 329 ··· 364 " processing\n", 365 ipcnum); 366 } 367 - unlock_kernel(); 368 } 369 break; 370 ··· 383 ipcnum); 384 return -EINVAL; 385 } 386 - lock_kernel(); 387 if (pDrvData->IPCs[ipcnum].bIsEnabled == TRUE) { 388 pDrvData->IPCs[ipcnum].bIsEnabled = FALSE; 389 if (pDrvData->IPCs[ipcnum].bIsHere == TRUE) { 390 wake_up_interruptible(&pDrvData->IPCs[ipcnum].ipc_wait_queue); 391 } 392 } 393 - unlock_kernel(); 394 } 395 break; 396
··· 56 #include <linux/serial.h> 57 #include <linux/sched.h> 58 #include <linux/spinlock.h> 59 + #include <linux/mutex.h> 60 #include <linux/delay.h> 61 #include <linux/serial_8250.h> 62 #include "smapi.h" ··· 73 * checks are made against other devices (ie. superio) for conflicts. 74 * We'll depend on users using the tpctl utility to do that for now 75 */ 76 + static DEFINE_MUTEX(mwave_mutex); 77 int mwave_debug = 0; 78 int mwave_3780i_irq = 0; 79 int mwave_3780i_io = 0; ··· 101 PRINTK_2(TRACE_MWAVE, 102 "mwavedd::mwave_open, exit return retval %x\n", retval); 103 104 return retval; 105 } 106 ··· 136 PRINTK_1(TRACE_MWAVE, 137 "mwavedd::mwave_ioctl, IOCTL_MW_RESET" 138 " calling tp3780I_ResetDSP\n"); 139 + mutex_lock(&mwave_mutex); 140 retval = tp3780I_ResetDSP(&pDrvData->rBDData); 141 + mutex_unlock(&mwave_mutex); 142 PRINTK_2(TRACE_MWAVE, 143 "mwavedd::mwave_ioctl, IOCTL_MW_RESET" 144 " retval %x from tp3780I_ResetDSP\n", ··· 149 PRINTK_1(TRACE_MWAVE, 150 "mwavedd::mwave_ioctl, IOCTL_MW_RUN" 151 " calling tp3780I_StartDSP\n"); 152 + mutex_lock(&mwave_mutex); 153 retval = tp3780I_StartDSP(&pDrvData->rBDData); 154 + mutex_unlock(&mwave_mutex); 155 PRINTK_2(TRACE_MWAVE, 156 "mwavedd::mwave_ioctl, IOCTL_MW_RUN" 157 " retval %x from tp3780I_StartDSP\n", ··· 165 "mwavedd::mwave_ioctl," 166 " IOCTL_MW_DSP_ABILITIES calling" 167 " tp3780I_QueryAbilities\n"); 168 + mutex_lock(&mwave_mutex); 169 retval = tp3780I_QueryAbilities(&pDrvData->rBDData, 170 &rAbilities); 171 + mutex_unlock(&mwave_mutex); 172 PRINTK_2(TRACE_MWAVE, 173 "mwavedd::mwave_ioctl, IOCTL_MW_DSP_ABILITIES" 174 " retval %x from tp3780I_QueryAbilities\n", ··· 199 "mwavedd::mwave_ioctl IOCTL_MW_READ_DATA," 200 " size %lx, ioarg %lx pusBuffer %p\n", 201 rReadData.ulDataLength, ioarg, pusBuffer); 202 + mutex_lock(&mwave_mutex); 203 retval = tp3780I_ReadWriteDspDStore(&pDrvData->rBDData, 204 iocmd, 205 pusBuffer, 206 rReadData.ulDataLength, 207 rReadData.usDspAddress); 208 + mutex_unlock(&mwave_mutex); 209 } 210 break; 211 ··· 223 " size %lx, ioarg %lx pusBuffer %p\n", 224 rReadData.ulDataLength / 2, ioarg, 225 pusBuffer); 226 + mutex_lock(&mwave_mutex); 227 retval = tp3780I_ReadWriteDspDStore(&pDrvData->rBDData, 228 iocmd, pusBuffer, 229 rReadData.ulDataLength / 2, 230 rReadData.usDspAddress); 231 + mutex_unlock(&mwave_mutex); 232 } 233 break; 234 ··· 246 " size %lx, ioarg %lx pusBuffer %p\n", 247 rWriteData.ulDataLength, ioarg, 248 pusBuffer); 249 + mutex_lock(&mwave_mutex); 250 retval = tp3780I_ReadWriteDspDStore(&pDrvData->rBDData, 251 iocmd, pusBuffer, 252 rWriteData.ulDataLength, 253 rWriteData.usDspAddress); 254 + mutex_unlock(&mwave_mutex); 255 } 256 break; 257 ··· 269 " size %lx, ioarg %lx pusBuffer %p\n", 270 rWriteData.ulDataLength, ioarg, 271 pusBuffer); 272 + mutex_lock(&mwave_mutex); 273 retval = tp3780I_ReadWriteDspIStore(&pDrvData->rBDData, 274 iocmd, pusBuffer, 275 rWriteData.ulDataLength, 276 rWriteData.usDspAddress); 277 + mutex_unlock(&mwave_mutex); 278 } 279 break; 280 ··· 295 ipcnum, 296 pDrvData->IPCs[ipcnum].usIntCount); 297 298 + mutex_lock(&mwave_mutex); 299 pDrvData->IPCs[ipcnum].bIsHere = FALSE; 300 pDrvData->IPCs[ipcnum].bIsEnabled = TRUE; 301 + mutex_unlock(&mwave_mutex); 302 303 PRINTK_2(TRACE_MWAVE, 304 "mwavedd::mwave_ioctl IOCTL_MW_REGISTER_IPC" ··· 323 ipcnum, 324 pDrvData->IPCs[ipcnum].usIntCount); 325 326 + mutex_lock(&mwave_mutex); 327 if (pDrvData->IPCs[ipcnum].bIsEnabled == TRUE) { 328 DECLARE_WAITQUEUE(wait, current); 329 ··· 364 " processing\n", 365 ipcnum); 366 } 367 + mutex_unlock(&mwave_mutex); 368 } 369 break; 370 ··· 383 ipcnum); 384 return -EINVAL; 385 } 386 + mutex_lock(&mwave_mutex); 387 if (pDrvData->IPCs[ipcnum].bIsEnabled == TRUE) { 388 pDrvData->IPCs[ipcnum].bIsEnabled = FALSE; 389 if (pDrvData->IPCs[ipcnum].bIsHere == TRUE) { 390 wake_up_interruptible(&pDrvData->IPCs[ipcnum].ipc_wait_queue); 391 } 392 } 393 + mutex_unlock(&mwave_mutex); 394 } 395 break; 396
+6 -5
drivers/char/nvram.c
··· 109 #include <linux/spinlock.h> 110 #include <linux/io.h> 111 #include <linux/uaccess.h> 112 - #include <linux/smp_lock.h> 113 114 #include <asm/system.h> 115 116 static DEFINE_SPINLOCK(nvram_state_lock); 117 static int nvram_open_cnt; /* #times opened */ 118 static int nvram_open_mode; /* special open modes */ ··· 309 if (!capable(CAP_SYS_ADMIN)) 310 return -EACCES; 311 312 - lock_kernel(); 313 spin_lock_irq(&rtc_lock); 314 315 for (i = 0; i < NVRAM_BYTES; ++i) ··· 317 __nvram_set_checksum(); 318 319 spin_unlock_irq(&rtc_lock); 320 - unlock_kernel(); 321 return 0; 322 323 case NVRAM_SETCKS: ··· 326 if (!capable(CAP_SYS_ADMIN)) 327 return -EACCES; 328 329 - lock_kernel(); 330 spin_lock_irq(&rtc_lock); 331 __nvram_set_checksum(); 332 spin_unlock_irq(&rtc_lock); 333 - unlock_kernel(); 334 return 0; 335 336 default:
··· 109 #include <linux/spinlock.h> 110 #include <linux/io.h> 111 #include <linux/uaccess.h> 112 + #include <linux/mutex.h> 113 114 #include <asm/system.h> 115 116 + static DEFINE_MUTEX(nvram_mutex); 117 static DEFINE_SPINLOCK(nvram_state_lock); 118 static int nvram_open_cnt; /* #times opened */ 119 static int nvram_open_mode; /* special open modes */ ··· 308 if (!capable(CAP_SYS_ADMIN)) 309 return -EACCES; 310 311 + mutex_lock(&nvram_mutex); 312 spin_lock_irq(&rtc_lock); 313 314 for (i = 0; i < NVRAM_BYTES; ++i) ··· 316 __nvram_set_checksum(); 317 318 spin_unlock_irq(&rtc_lock); 319 + mutex_unlock(&nvram_mutex); 320 return 0; 321 322 case NVRAM_SETCKS: ··· 325 if (!capable(CAP_SYS_ADMIN)) 326 return -EACCES; 327 328 + mutex_lock(&nvram_mutex); 329 spin_lock_irq(&rtc_lock); 330 __nvram_set_checksum(); 331 spin_unlock_irq(&rtc_lock); 332 + mutex_unlock(&nvram_mutex); 333 return 0; 334 335 default:
+6 -6
drivers/char/nwflash.c
··· 25 #include <linux/spinlock.h> 26 #include <linux/rwsem.h> 27 #include <linux/init.h> 28 - #include <linux/smp_lock.h> 29 #include <linux/mutex.h> 30 #include <linux/jiffies.h> 31 ··· 40 41 #define NWFLASH_VERSION "6.4" 42 43 static void kick_open(void); 44 static int get_flash_id(void); 45 static int erase_block(int nBlock); ··· 96 97 static long flash_ioctl(struct file *filep, unsigned int cmd, unsigned long arg) 98 { 99 - lock_kernel(); 100 switch (cmd) { 101 case CMD_WRITE_DISABLE: 102 gbWriteBase64Enable = 0; ··· 114 default: 115 gbWriteBase64Enable = 0; 116 gbWriteEnable = 0; 117 - unlock_kernel(); 118 return -EINVAL; 119 } 120 - unlock_kernel(); 121 return 0; 122 } 123 ··· 282 { 283 loff_t ret; 284 285 - lock_kernel(); 286 if (flashdebug) 287 printk(KERN_DEBUG "flash_llseek: offset=0x%X, orig=0x%X.\n", 288 (unsigned int) offset, orig); ··· 317 default: 318 ret = -EINVAL; 319 } 320 - unlock_kernel(); 321 return ret; 322 } 323
··· 25 #include <linux/spinlock.h> 26 #include <linux/rwsem.h> 27 #include <linux/init.h> 28 #include <linux/mutex.h> 29 #include <linux/jiffies.h> 30 ··· 41 42 #define NWFLASH_VERSION "6.4" 43 44 + static DEFINE_MUTEX(flash_mutex); 45 static void kick_open(void); 46 static int get_flash_id(void); 47 static int erase_block(int nBlock); ··· 96 97 static long flash_ioctl(struct file *filep, unsigned int cmd, unsigned long arg) 98 { 99 + mutex_lock(&flash_mutex); 100 switch (cmd) { 101 case CMD_WRITE_DISABLE: 102 gbWriteBase64Enable = 0; ··· 114 default: 115 gbWriteBase64Enable = 0; 116 gbWriteEnable = 0; 117 + mutex_unlock(&flash_mutex); 118 return -EINVAL; 119 } 120 + mutex_unlock(&flash_mutex); 121 return 0; 122 } 123 ··· 282 { 283 loff_t ret; 284 285 + mutex_lock(&flash_mutex); 286 if (flashdebug) 287 printk(KERN_DEBUG "flash_llseek: offset=0x%X, orig=0x%X.\n", 288 (unsigned int) offset, orig); ··· 317 default: 318 ret = -EINVAL; 319 } 320 + mutex_unlock(&flash_mutex); 321 return ret; 322 } 323
+7 -5
drivers/char/pcmcia/cm4000_cs.c
··· 30 #include <linux/fs.h> 31 #include <linux/delay.h> 32 #include <linux/bitrev.h> 33 - #include <linux/smp_lock.h> 34 #include <linux/uaccess.h> 35 #include <linux/io.h> 36 ··· 53 dev_dbg(reader_to_dev(rdr), "%s:" x, \ 54 __func__ , ## args); \ 55 } while (0) 56 57 #define T_1SEC (HZ) 58 #define T_10MSEC msecs_to_jiffies(10) ··· 1417 iminor(inode), ioctl_names[_IOC_NR(cmd)]); 1418 #endif 1419 1420 - lock_kernel(); 1421 rc = -ENODEV; 1422 link = dev_table[iminor(inode)]; 1423 if (!pcmcia_dev_present(link)) { ··· 1625 rc = -ENOTTY; 1626 } 1627 out: 1628 - unlock_kernel(); 1629 return rc; 1630 } 1631 ··· 1639 if (minor >= CM4000_MAX_DEV) 1640 return -ENODEV; 1641 1642 - lock_kernel(); 1643 link = dev_table[minor]; 1644 if (link == NULL || !pcmcia_dev_present(link)) { 1645 ret = -ENODEV; ··· 1684 DEBUGP(2, dev, "<- cmm_open\n"); 1685 ret = nonseekable_open(inode, filp); 1686 out: 1687 - unlock_kernel(); 1688 return ret; 1689 } 1690
··· 30 #include <linux/fs.h> 31 #include <linux/delay.h> 32 #include <linux/bitrev.h> 33 + #include <linux/mutex.h> 34 #include <linux/uaccess.h> 35 #include <linux/io.h> 36 ··· 53 dev_dbg(reader_to_dev(rdr), "%s:" x, \ 54 __func__ , ## args); \ 55 } while (0) 56 + 57 + static DEFINE_MUTEX(cmm_mutex); 58 59 #define T_1SEC (HZ) 60 #define T_10MSEC msecs_to_jiffies(10) ··· 1415 iminor(inode), ioctl_names[_IOC_NR(cmd)]); 1416 #endif 1417 1418 + mutex_lock(&cmm_mutex); 1419 rc = -ENODEV; 1420 link = dev_table[iminor(inode)]; 1421 if (!pcmcia_dev_present(link)) { ··· 1623 rc = -ENOTTY; 1624 } 1625 out: 1626 + mutex_unlock(&cmm_mutex); 1627 return rc; 1628 } 1629 ··· 1637 if (minor >= CM4000_MAX_DEV) 1638 return -ENODEV; 1639 1640 + mutex_lock(&cmm_mutex); 1641 link = dev_table[minor]; 1642 if (link == NULL || !pcmcia_dev_present(link)) { 1643 ret = -ENODEV; ··· 1682 DEBUGP(2, dev, "<- cmm_open\n"); 1683 ret = nonseekable_open(inode, filp); 1684 out: 1685 + mutex_unlock(&cmm_mutex); 1686 return ret; 1687 } 1688
+5 -3
drivers/char/pcmcia/cm4040_cs.c
··· 24 #include <linux/fs.h> 25 #include <linux/delay.h> 26 #include <linux/poll.h> 27 - #include <linux/smp_lock.h> 28 #include <linux/wait.h> 29 #include <asm/uaccess.h> 30 #include <asm/io.h> ··· 47 dev_dbg(reader_to_dev(rdr), "%s:" x, \ 48 __func__ , ## args); \ 49 } while (0) 50 51 #define CCID_DRIVER_BULK_DEFAULT_TIMEOUT (150*HZ) 52 #define CCID_DRIVER_ASYNC_POWERUP_TIMEOUT (35*HZ) ··· 442 if (minor >= CM_MAX_DEV) 443 return -ENODEV; 444 445 - lock_kernel(); 446 link = dev_table[minor]; 447 if (link == NULL || !pcmcia_dev_present(link)) { 448 ret = -ENODEV; ··· 471 DEBUGP(2, dev, "<- cm4040_open (successfully)\n"); 472 ret = nonseekable_open(inode, filp); 473 out: 474 - unlock_kernel(); 475 return ret; 476 } 477
··· 24 #include <linux/fs.h> 25 #include <linux/delay.h> 26 #include <linux/poll.h> 27 + #include <linux/mutex.h> 28 #include <linux/wait.h> 29 #include <asm/uaccess.h> 30 #include <asm/io.h> ··· 47 dev_dbg(reader_to_dev(rdr), "%s:" x, \ 48 __func__ , ## args); \ 49 } while (0) 50 + 51 + static DEFINE_MUTEX(cm4040_mutex); 52 53 #define CCID_DRIVER_BULK_DEFAULT_TIMEOUT (150*HZ) 54 #define CCID_DRIVER_ASYNC_POWERUP_TIMEOUT (35*HZ) ··· 440 if (minor >= CM_MAX_DEV) 441 return -ENODEV; 442 443 + mutex_lock(&cm4040_mutex); 444 link = dev_table[minor]; 445 if (link == NULL || !pcmcia_dev_present(link)) { 446 ret = -ENODEV; ··· 469 DEBUGP(2, dev, "<- cm4040_open (successfully)\n"); 470 ret = nonseekable_open(inode, filp); 471 out: 472 + mutex_unlock(&cm4040_mutex); 473 return ret; 474 } 475
+4 -4
drivers/char/ppdev.c
··· 67 #include <linux/slab.h> 68 #include <linux/major.h> 69 #include <linux/ppdev.h> 70 - #include <linux/smp_lock.h> 71 #include <linux/uaccess.h> 72 73 #define PP_VERSION "ppdev: user-space parallel port driver" ··· 97 /* ROUND_UP macro from fs/select.c */ 98 #define ROUND_UP(x,y) (((x)+(y)-1)/(y)) 99 100 static inline void pp_enable_irq (struct pp_struct *pp) 101 { 102 struct parport *port = pp->pdev->port; ··· 631 static long pp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) 632 { 633 long ret; 634 - lock_kernel(); 635 ret = pp_do_ioctl(file, cmd, arg); 636 - unlock_kernel(); 637 return ret; 638 } 639 ··· 642 unsigned int minor = iminor(inode); 643 struct pp_struct *pp; 644 645 - cycle_kernel_lock(); 646 if (minor >= PARPORT_MAX) 647 return -ENXIO; 648
··· 67 #include <linux/slab.h> 68 #include <linux/major.h> 69 #include <linux/ppdev.h> 70 + #include <linux/mutex.h> 71 #include <linux/uaccess.h> 72 73 #define PP_VERSION "ppdev: user-space parallel port driver" ··· 97 /* ROUND_UP macro from fs/select.c */ 98 #define ROUND_UP(x,y) (((x)+(y)-1)/(y)) 99 100 + static DEFINE_MUTEX(pp_do_mutex); 101 static inline void pp_enable_irq (struct pp_struct *pp) 102 { 103 struct parport *port = pp->pdev->port; ··· 630 static long pp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) 631 { 632 long ret; 633 + mutex_lock(&pp_do_mutex); 634 ret = pp_do_ioctl(file, cmd, arg); 635 + mutex_unlock(&pp_do_mutex); 636 return ret; 637 } 638 ··· 641 unsigned int minor = iminor(inode); 642 struct pp_struct *pp; 643 644 if (minor >= PARPORT_MAX) 645 return -ENXIO; 646
+4 -3
drivers/char/rio/rio_linux.c
··· 44 #include <linux/delay.h> 45 #include <linux/pci.h> 46 #include <linux/slab.h> 47 - #include <linux/smp_lock.h> 48 #include <linux/miscdevice.h> 49 #include <linux/init.h> 50 ··· 122 123 124 /* These constants are derived from SCO Source */ 125 static struct Conf 126 RIOConf = { 127 /* locator */ "RIO Config here", ··· 567 func_enter(); 568 569 /* The "dev" argument isn't used. */ 570 - lock_kernel(); 571 rc = riocontrol(p, 0, cmd, arg, capable(CAP_SYS_ADMIN)); 572 - unlock_kernel(); 573 574 func_exit(); 575 return rc;
··· 44 #include <linux/delay.h> 45 #include <linux/pci.h> 46 #include <linux/slab.h> 47 + #include <linux/mutex.h> 48 #include <linux/miscdevice.h> 49 #include <linux/init.h> 50 ··· 122 123 124 /* These constants are derived from SCO Source */ 125 + static DEFINE_MUTEX(rio_fw_mutex); 126 static struct Conf 127 RIOConf = { 128 /* locator */ "RIO Config here", ··· 566 func_enter(); 567 568 /* The "dev" argument isn't used. */ 569 + mutex_lock(&rio_fw_mutex); 570 rc = riocontrol(p, 0, cmd, arg, capable(CAP_SYS_ADMIN)); 571 + mutex_unlock(&rio_fw_mutex); 572 573 func_exit(); 574 return rc;
+5 -4
drivers/char/snsc.c
··· 21 #include <linux/poll.h> 22 #include <linux/module.h> 23 #include <linux/slab.h> 24 - #include <linux/smp_lock.h> 25 #include <asm/sn/io.h> 26 #include <asm/sn/sn_sal.h> 27 #include <asm/sn/module.h> ··· 34 #define SCDRV_BUFSZ 2048 35 #define SCDRV_TIMEOUT 1000 36 37 static irqreturn_t 38 scdrv_interrupt(int irq, void *subch_data) 39 { ··· 106 file->private_data = sd; 107 108 /* hook this subchannel up to the system controller interrupt */ 109 - lock_kernel(); 110 rv = request_irq(SGI_UART_VECTOR, scdrv_interrupt, 111 IRQF_SHARED | IRQF_DISABLED, 112 SYSCTL_BASENAME, sd); ··· 114 ia64_sn_irtr_close(sd->sd_nasid, sd->sd_subch); 115 kfree(sd); 116 printk("%s: irq request failed (%d)\n", __func__, rv); 117 - unlock_kernel(); 118 return -EBUSY; 119 } 120 - unlock_kernel(); 121 return 0; 122 } 123
··· 21 #include <linux/poll.h> 22 #include <linux/module.h> 23 #include <linux/slab.h> 24 + #include <linux/mutex.h> 25 #include <asm/sn/io.h> 26 #include <asm/sn/sn_sal.h> 27 #include <asm/sn/module.h> ··· 34 #define SCDRV_BUFSZ 2048 35 #define SCDRV_TIMEOUT 1000 36 37 + static DEFINE_MUTEX(scdrv_mutex); 38 static irqreturn_t 39 scdrv_interrupt(int irq, void *subch_data) 40 { ··· 105 file->private_data = sd; 106 107 /* hook this subchannel up to the system controller interrupt */ 108 + mutex_lock(&scdrv_mutex); 109 rv = request_irq(SGI_UART_VECTOR, scdrv_interrupt, 110 IRQF_SHARED | IRQF_DISABLED, 111 SYSCTL_BASENAME, sd); ··· 113 ia64_sn_irtr_close(sd->sd_nasid, sd->sd_subch); 114 kfree(sd); 115 printk("%s: irq request failed (%d)\n", __func__, rv); 116 + mutex_unlock(&scdrv_mutex); 117 return -EBUSY; 118 } 119 + mutex_unlock(&scdrv_mutex); 120 return 0; 121 } 122
+5 -4
drivers/char/toshiba.c
··· 68 #include <linux/stat.h> 69 #include <linux/proc_fs.h> 70 #include <linux/seq_file.h> 71 - #include <linux/smp_lock.h> 72 #include <linux/toshiba.h> 73 74 #define TOSH_MINOR_DEV 181 ··· 78 MODULE_DESCRIPTION("Toshiba laptop SMM driver"); 79 MODULE_SUPPORTED_DEVICE("toshiba"); 80 81 static int tosh_fn; 82 module_param_named(fn, tosh_fn, int, 0); 83 MODULE_PARM_DESC(fn, "User specified Fn key detection port"); ··· 275 return -EINVAL; 276 277 /* do we need to emulate the fan ? */ 278 - lock_kernel(); 279 if (tosh_fan==1) { 280 if (((ax==0xf300) || (ax==0xf400)) && (bx==0x0004)) { 281 err = tosh_emulate_fan(&regs); 282 - unlock_kernel(); 283 break; 284 } 285 } 286 err = tosh_smm(&regs); 287 - unlock_kernel(); 288 break; 289 default: 290 return -EINVAL;
··· 68 #include <linux/stat.h> 69 #include <linux/proc_fs.h> 70 #include <linux/seq_file.h> 71 + #include <linux/mutex.h> 72 #include <linux/toshiba.h> 73 74 #define TOSH_MINOR_DEV 181 ··· 78 MODULE_DESCRIPTION("Toshiba laptop SMM driver"); 79 MODULE_SUPPORTED_DEVICE("toshiba"); 80 81 + static DEFINE_MUTEX(tosh_mutex); 82 static int tosh_fn; 83 module_param_named(fn, tosh_fn, int, 0); 84 MODULE_PARM_DESC(fn, "User specified Fn key detection port"); ··· 274 return -EINVAL; 275 276 /* do we need to emulate the fan ? */ 277 + mutex_lock(&tosh_mutex); 278 if (tosh_fan==1) { 279 if (((ax==0xf300) || (ax==0xf400)) && (bx==0x0004)) { 280 err = tosh_emulate_fan(&regs); 281 + mutex_unlock(&tosh_mutex); 282 break; 283 } 284 } 285 err = tosh_smm(&regs); 286 + mutex_unlock(&tosh_mutex); 287 break; 288 default: 289 return -EINVAL;
+6 -5
drivers/char/viotape.c
··· 46 #include <linux/completion.h> 47 #include <linux/proc_fs.h> 48 #include <linux/seq_file.h> 49 - #include <linux/smp_lock.h> 50 #include <linux/slab.h> 51 52 #include <asm/uaccess.h> ··· 64 #define VIOTAPE_KERN_WARN KERN_WARNING "viotape: " 65 #define VIOTAPE_KERN_INFO KERN_INFO "viotape: " 66 67 static int viotape_numdev; 68 69 /* ··· 685 { 686 long rc; 687 688 - lock_kernel(); 689 rc = viotap_ioctl(file->f_path.dentry->d_inode, file, cmd, arg); 690 - unlock_kernel(); 691 return rc; 692 } 693 ··· 701 if (op == NULL) 702 return -ENOMEM; 703 704 - lock_kernel(); 705 get_dev_info(file->f_path.dentry->d_inode, &devi); 706 707 /* Note: We currently only support one mode! */ ··· 732 733 free_op: 734 free_op_struct(op); 735 - unlock_kernel(); 736 return ret; 737 } 738
··· 46 #include <linux/completion.h> 47 #include <linux/proc_fs.h> 48 #include <linux/seq_file.h> 49 + #include <linux/mutex.h> 50 #include <linux/slab.h> 51 52 #include <asm/uaccess.h> ··· 64 #define VIOTAPE_KERN_WARN KERN_WARNING "viotape: " 65 #define VIOTAPE_KERN_INFO KERN_INFO "viotape: " 66 67 + static DEFINE_MUTEX(proc_viotape_mutex); 68 static int viotape_numdev; 69 70 /* ··· 684 { 685 long rc; 686 687 + mutex_lock(&proc_viotape_mutex); 688 rc = viotap_ioctl(file->f_path.dentry->d_inode, file, cmd, arg); 689 + mutex_unlock(&proc_viotape_mutex); 690 return rc; 691 } 692 ··· 700 if (op == NULL) 701 return -ENOMEM; 702 703 + mutex_lock(&proc_viotape_mutex); 704 get_dev_info(file->f_path.dentry->d_inode, &devi); 705 706 /* Note: We currently only support one mode! */ ··· 731 732 free_op: 733 free_op_struct(op); 734 + mutex_unlock(&proc_viotape_mutex); 735 return ret; 736 } 737
+3 -3
drivers/char/xilinx_hwicap/xilinx_hwicap.c
··· 81 #include <linux/poll.h> 82 #include <linux/proc_fs.h> 83 #include <linux/mutex.h> 84 - #include <linux/smp_lock.h> 85 #include <linux/sysctl.h> 86 #include <linux/fs.h> 87 #include <linux/cdev.h> ··· 111 #define HWICAP_DEVICES 1 112 113 /* An array, which is set to true when the device is registered. */ 114 static bool probed_devices[HWICAP_DEVICES]; 115 static struct mutex icap_sem; 116 ··· 502 struct hwicap_drvdata *drvdata; 503 int status; 504 505 - lock_kernel(); 506 drvdata = container_of(inode->i_cdev, struct hwicap_drvdata, cdev); 507 508 status = mutex_lock_interruptible(&drvdata->sem); ··· 528 error: 529 mutex_unlock(&drvdata->sem); 530 out: 531 - unlock_kernel(); 532 return status; 533 } 534
··· 81 #include <linux/poll.h> 82 #include <linux/proc_fs.h> 83 #include <linux/mutex.h> 84 #include <linux/sysctl.h> 85 #include <linux/fs.h> 86 #include <linux/cdev.h> ··· 112 #define HWICAP_DEVICES 1 113 114 /* An array, which is set to true when the device is registered. */ 115 + static DEFINE_MUTEX(hwicap_mutex); 116 static bool probed_devices[HWICAP_DEVICES]; 117 static struct mutex icap_sem; 118 ··· 502 struct hwicap_drvdata *drvdata; 503 int status; 504 505 + mutex_lock(&hwicap_mutex); 506 drvdata = container_of(inode->i_cdev, struct hwicap_drvdata, cdev); 507 508 status = mutex_lock_interruptible(&drvdata->sem); ··· 528 error: 529 mutex_unlock(&drvdata->sem); 530 out: 531 + mutex_unlock(&hwicap_mutex); 532 return status; 533 } 534
+3 -3
drivers/hwmon/fschmd.c
··· 38 #include <linux/i2c.h> 39 #include <linux/hwmon.h> 40 #include <linux/hwmon-sysfs.h> 41 - #include <linux/smp_lock.h> 42 #include <linux/err.h> 43 #include <linux/mutex.h> 44 #include <linux/sysfs.h> ··· 49 #include <linux/kref.h> 50 51 /* Addresses to scan */ 52 static const unsigned short normal_i2c[] = { 0x73, I2C_CLIENT_END }; 53 54 /* Insmod parameters */ ··· 858 int i, ret = 0; 859 struct fschmd_data *data = filp->private_data; 860 861 - lock_kernel(); 862 switch (cmd) { 863 case WDIOC_GETSUPPORT: 864 ident.firmware_version = data->revision; ··· 915 default: 916 ret = -ENOTTY; 917 } 918 - unlock_kernel(); 919 return ret; 920 } 921
··· 38 #include <linux/i2c.h> 39 #include <linux/hwmon.h> 40 #include <linux/hwmon-sysfs.h> 41 #include <linux/err.h> 42 #include <linux/mutex.h> 43 #include <linux/sysfs.h> ··· 50 #include <linux/kref.h> 51 52 /* Addresses to scan */ 53 + static DEFINE_MUTEX(watchdog_mutex); 54 static const unsigned short normal_i2c[] = { 0x73, I2C_CLIENT_END }; 55 56 /* Insmod parameters */ ··· 858 int i, ret = 0; 859 struct fschmd_data *data = filp->private_data; 860 861 + mutex_lock(&watchdog_mutex); 862 switch (cmd) { 863 case WDIOC_GETSUPPORT: 864 ident.firmware_version = data->revision; ··· 915 default: 916 ret = -ENOTTY; 917 } 918 + mutex_unlock(&watchdog_mutex); 919 return ret; 920 } 921
+3 -3
drivers/hwmon/w83793.c
··· 35 #include <linux/slab.h> 36 #include <linux/i2c.h> 37 #include <linux/hwmon.h> 38 - #include <linux/smp_lock.h> 39 #include <linux/hwmon-vid.h> 40 #include <linux/hwmon-sysfs.h> 41 #include <linux/err.h> ··· 51 #define WATCHDOG_TIMEOUT 2 /* 2 minute default timeout */ 52 53 /* Addresses to scan */ 54 static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, 0x2f, 55 I2C_CLIENT_END }; 56 ··· 1333 int val, ret = 0; 1334 struct w83793_data *data = filp->private_data; 1335 1336 - lock_kernel(); 1337 switch (cmd) { 1338 case WDIOC_GETSUPPORT: 1339 if (!nowayout) ··· 1387 default: 1388 ret = -ENOTTY; 1389 } 1390 - unlock_kernel(); 1391 return ret; 1392 } 1393
··· 35 #include <linux/slab.h> 36 #include <linux/i2c.h> 37 #include <linux/hwmon.h> 38 #include <linux/hwmon-vid.h> 39 #include <linux/hwmon-sysfs.h> 40 #include <linux/err.h> ··· 52 #define WATCHDOG_TIMEOUT 2 /* 2 minute default timeout */ 53 54 /* Addresses to scan */ 55 + static DEFINE_MUTEX(watchdog_mutex); 56 static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, 0x2f, 57 I2C_CLIENT_END }; 58 ··· 1333 int val, ret = 0; 1334 struct w83793_data *data = filp->private_data; 1335 1336 + mutex_lock(&watchdog_mutex); 1337 switch (cmd) { 1338 case WDIOC_GETSUPPORT: 1339 if (!nowayout) ··· 1387 default: 1388 ret = -ENOTTY; 1389 } 1390 + mutex_unlock(&watchdog_mutex); 1391 return ret; 1392 } 1393
+7 -7
drivers/ide/ide-cd.c
··· 31 #include <linux/delay.h> 32 #include <linux/timer.h> 33 #include <linux/seq_file.h> 34 - #include <linux/smp_lock.h> 35 #include <linux/slab.h> 36 #include <linux/interrupt.h> 37 #include <linux/errno.h> ··· 51 52 #include "ide-cd.h" 53 54 static DEFINE_MUTEX(idecd_ref_mutex); 55 56 static void ide_cd_release(struct device *); ··· 1602 struct cdrom_info *info; 1603 int rc = -ENXIO; 1604 1605 - lock_kernel(); 1606 info = ide_cd_get(bdev->bd_disk); 1607 if (!info) 1608 goto out; ··· 1611 if (rc < 0) 1612 ide_cd_put(info); 1613 out: 1614 - unlock_kernel(); 1615 return rc; 1616 } 1617 ··· 1619 { 1620 struct cdrom_info *info = ide_drv_g(disk, cdrom_info); 1621 1622 - lock_kernel(); 1623 cdrom_release(&info->devinfo, mode); 1624 1625 ide_cd_put(info); 1626 - unlock_kernel(); 1627 1628 return 0; 1629 } ··· 1694 { 1695 int ret; 1696 1697 - lock_kernel(); 1698 ret = idecd_locked_ioctl(bdev, mode, cmd, arg); 1699 - unlock_kernel(); 1700 1701 return ret; 1702 }
··· 31 #include <linux/delay.h> 32 #include <linux/timer.h> 33 #include <linux/seq_file.h> 34 #include <linux/slab.h> 35 #include <linux/interrupt.h> 36 #include <linux/errno.h> ··· 52 53 #include "ide-cd.h" 54 55 + static DEFINE_MUTEX(ide_cd_mutex); 56 static DEFINE_MUTEX(idecd_ref_mutex); 57 58 static void ide_cd_release(struct device *); ··· 1602 struct cdrom_info *info; 1603 int rc = -ENXIO; 1604 1605 + mutex_lock(&ide_cd_mutex); 1606 info = ide_cd_get(bdev->bd_disk); 1607 if (!info) 1608 goto out; ··· 1611 if (rc < 0) 1612 ide_cd_put(info); 1613 out: 1614 + mutex_unlock(&ide_cd_mutex); 1615 return rc; 1616 } 1617 ··· 1619 { 1620 struct cdrom_info *info = ide_drv_g(disk, cdrom_info); 1621 1622 + mutex_lock(&ide_cd_mutex); 1623 cdrom_release(&info->devinfo, mode); 1624 1625 ide_cd_put(info); 1626 + mutex_unlock(&ide_cd_mutex); 1627 1628 return 0; 1629 } ··· 1694 { 1695 int ret; 1696 1697 + mutex_lock(&ide_cd_mutex); 1698 ret = idecd_locked_ioctl(bdev, mode, cmd, arg); 1699 + mutex_unlock(&ide_cd_mutex); 1700 1701 return ret; 1702 }
+4 -3
drivers/ide/ide-disk_ioctl.c
··· 1 #include <linux/kernel.h> 2 #include <linux/ide.h> 3 #include <linux/hdreg.h> 4 - #include <linux/smp_lock.h> 5 6 #include "ide-disk.h" 7 8 static const struct ide_ioctl_devset ide_disk_ioctl_settings[] = { 9 { HDIO_GET_ADDRESS, HDIO_SET_ADDRESS, &ide_devset_address }, 10 { HDIO_GET_MULTCOUNT, HDIO_SET_MULTCOUNT, &ide_devset_multcount }, ··· 20 { 21 int err; 22 23 - lock_kernel(); 24 err = ide_setting_ioctl(drive, bdev, cmd, arg, ide_disk_ioctl_settings); 25 if (err != -EOPNOTSUPP) 26 goto out; 27 28 err = generic_ide_ioctl(drive, bdev, cmd, arg); 29 out: 30 - unlock_kernel(); 31 return err; 32 }
··· 1 #include <linux/kernel.h> 2 #include <linux/ide.h> 3 #include <linux/hdreg.h> 4 + #include <linux/mutex.h> 5 6 #include "ide-disk.h" 7 8 + static DEFINE_MUTEX(ide_disk_ioctl_mutex); 9 static const struct ide_ioctl_devset ide_disk_ioctl_settings[] = { 10 { HDIO_GET_ADDRESS, HDIO_SET_ADDRESS, &ide_devset_address }, 11 { HDIO_GET_MULTCOUNT, HDIO_SET_MULTCOUNT, &ide_devset_multcount }, ··· 19 { 20 int err; 21 22 + mutex_lock(&ide_disk_ioctl_mutex); 23 err = ide_setting_ioctl(drive, bdev, cmd, arg, ide_disk_ioctl_settings); 24 if (err != -EOPNOTSUPP) 25 goto out; 26 27 err = generic_ide_ioctl(drive, bdev, cmd, arg); 28 out: 29 + mutex_unlock(&ide_disk_ioctl_mutex); 30 return err; 31 }
+4 -3
drivers/ide/ide-floppy_ioctl.c
··· 5 #include <linux/kernel.h> 6 #include <linux/ide.h> 7 #include <linux/cdrom.h> 8 - #include <linux/smp_lock.h> 9 10 #include <asm/unaligned.h> 11 ··· 32 * On exit we set nformats to the number of records we've actually initialized. 33 */ 34 35 static int ide_floppy_get_format_capacities(ide_drive_t *drive, 36 struct ide_atapi_pc *pc, 37 int __user *arg) ··· 277 void __user *argp = (void __user *)arg; 278 int err; 279 280 - lock_kernel(); 281 if (cmd == CDROMEJECT || cmd == CDROM_LOCKDOOR) { 282 err = ide_floppy_lockdoor(drive, &pc, arg, cmd); 283 goto out; ··· 299 err = generic_ide_ioctl(drive, bdev, cmd, arg); 300 301 out: 302 - unlock_kernel(); 303 return err; 304 }
··· 5 #include <linux/kernel.h> 6 #include <linux/ide.h> 7 #include <linux/cdrom.h> 8 + #include <linux/mutex.h> 9 10 #include <asm/unaligned.h> 11 ··· 32 * On exit we set nformats to the number of records we've actually initialized. 33 */ 34 35 + static DEFINE_MUTEX(ide_floppy_ioctl_mutex); 36 static int ide_floppy_get_format_capacities(ide_drive_t *drive, 37 struct ide_atapi_pc *pc, 38 int __user *arg) ··· 276 void __user *argp = (void __user *)arg; 277 int err; 278 279 + mutex_lock(&ide_floppy_ioctl_mutex); 280 if (cmd == CDROMEJECT || cmd == CDROM_LOCKDOOR) { 281 err = ide_floppy_lockdoor(drive, &pc, arg, cmd); 282 goto out; ··· 298 err = generic_ide_ioctl(drive, bdev, cmd, arg); 299 300 out: 301 + mutex_unlock(&ide_floppy_ioctl_mutex); 302 return err; 303 }
+5 -5
drivers/ide/ide-gd.c
··· 1 - #include <linux/smp_lock.h> 2 #include <linux/module.h> 3 #include <linux/types.h> 4 #include <linux/string.h> ··· 22 #define IDE_GD_VERSION "1.18" 23 24 /* module parameters */ 25 static unsigned long debug_mask; 26 module_param(debug_mask, ulong, 0644); 27 ··· 242 { 243 int ret; 244 245 - lock_kernel(); 246 ret = ide_gd_open(bdev, mode); 247 - unlock_kernel(); 248 249 return ret; 250 } ··· 257 258 ide_debug_log(IDE_DBG_FUNC, "enter"); 259 260 - lock_kernel(); 261 if (idkp->openers == 1) 262 drive->disk_ops->flush(drive); 263 ··· 269 idkp->openers--; 270 271 ide_disk_put(idkp); 272 - unlock_kernel(); 273 274 return 0; 275 }
··· 1 #include <linux/module.h> 2 #include <linux/types.h> 3 #include <linux/string.h> ··· 23 #define IDE_GD_VERSION "1.18" 24 25 /* module parameters */ 26 + static DEFINE_MUTEX(ide_gd_mutex); 27 static unsigned long debug_mask; 28 module_param(debug_mask, ulong, 0644); 29 ··· 242 { 243 int ret; 244 245 + mutex_lock(&ide_gd_mutex); 246 ret = ide_gd_open(bdev, mode); 247 + mutex_unlock(&ide_gd_mutex); 248 249 return ret; 250 } ··· 257 258 ide_debug_log(IDE_DBG_FUNC, "enter"); 259 260 + mutex_lock(&ide_gd_mutex); 261 if (idkp->openers == 1) 262 drive->disk_ops->flush(drive); 263 ··· 269 idkp->openers--; 270 271 ide_disk_put(idkp); 272 + mutex_unlock(&ide_gd_mutex); 273 274 return 0; 275 }
+9 -10
drivers/ide/ide-tape.c
··· 32 #include <linux/errno.h> 33 #include <linux/genhd.h> 34 #include <linux/seq_file.h> 35 - #include <linux/smp_lock.h> 36 #include <linux/slab.h> 37 #include <linux/pci.h> 38 #include <linux/ide.h> 39 - #include <linux/smp_lock.h> 40 #include <linux/completion.h> 41 #include <linux/bitops.h> 42 #include <linux/mutex.h> ··· 218 char write_prot; 219 } idetape_tape_t; 220 221 static DEFINE_MUTEX(idetape_ref_mutex); 222 223 static DEFINE_MUTEX(idetape_chrdev_mutex); ··· 1425 unsigned int cmd, unsigned long arg) 1426 { 1427 long ret; 1428 - lock_kernel(); 1429 ret = do_idetape_chrdev_ioctl(file, cmd, arg); 1430 - unlock_kernel(); 1431 return ret; 1432 } 1433 ··· 1908 { 1909 struct ide_tape_obj *tape; 1910 1911 - lock_kernel(); 1912 tape = ide_tape_get(bdev->bd_disk, false, 0); 1913 - unlock_kernel(); 1914 1915 if (!tape) 1916 return -ENXIO; ··· 1922 { 1923 struct ide_tape_obj *tape = ide_drv_g(disk, ide_tape_obj); 1924 1925 - lock_kernel(); 1926 ide_tape_put(tape); 1927 - unlock_kernel(); 1928 1929 return 0; 1930 } ··· 1936 ide_drive_t *drive = tape->drive; 1937 int err; 1938 1939 - lock_kernel(); 1940 err = generic_ide_ioctl(drive, bdev, cmd, arg); 1941 if (err == -EINVAL) 1942 err = idetape_blkdev_ioctl(drive, cmd, arg); 1943 - unlock_kernel(); 1944 1945 return err; 1946 }
··· 32 #include <linux/errno.h> 33 #include <linux/genhd.h> 34 #include <linux/seq_file.h> 35 #include <linux/slab.h> 36 #include <linux/pci.h> 37 #include <linux/ide.h> 38 #include <linux/completion.h> 39 #include <linux/bitops.h> 40 #include <linux/mutex.h> ··· 220 char write_prot; 221 } idetape_tape_t; 222 223 + static DEFINE_MUTEX(ide_tape_mutex); 224 static DEFINE_MUTEX(idetape_ref_mutex); 225 226 static DEFINE_MUTEX(idetape_chrdev_mutex); ··· 1426 unsigned int cmd, unsigned long arg) 1427 { 1428 long ret; 1429 + mutex_lock(&ide_tape_mutex); 1430 ret = do_idetape_chrdev_ioctl(file, cmd, arg); 1431 + mutex_unlock(&ide_tape_mutex); 1432 return ret; 1433 } 1434 ··· 1909 { 1910 struct ide_tape_obj *tape; 1911 1912 + mutex_lock(&ide_tape_mutex); 1913 tape = ide_tape_get(bdev->bd_disk, false, 0); 1914 + mutex_unlock(&ide_tape_mutex); 1915 1916 if (!tape) 1917 return -ENXIO; ··· 1923 { 1924 struct ide_tape_obj *tape = ide_drv_g(disk, ide_tape_obj); 1925 1926 + mutex_lock(&ide_tape_mutex); 1927 ide_tape_put(tape); 1928 + mutex_unlock(&ide_tape_mutex); 1929 1930 return 0; 1931 } ··· 1937 ide_drive_t *drive = tape->drive; 1938 int err; 1939 1940 + mutex_lock(&ide_tape_mutex); 1941 err = generic_ide_ioctl(drive, bdev, cmd, arg); 1942 if (err == -EINVAL) 1943 err = idetape_blkdev_ioctl(drive, cmd, arg); 1944 + mutex_unlock(&ide_tape_mutex); 1945 1946 return err; 1947 }
+4 -3
drivers/input/misc/hp_sdc_rtc.c
··· 43 #include <linux/proc_fs.h> 44 #include <linux/poll.h> 45 #include <linux/rtc.h> 46 - #include <linux/smp_lock.h> 47 #include <linux/semaphore.h> 48 49 MODULE_AUTHOR("Brian S. Julin <bri@calyx.com>"); ··· 52 53 #define RTC_VERSION "1.10d" 54 55 static unsigned long epoch = 2000; 56 57 static struct semaphore i8042tregs; ··· 666 { 667 int ret; 668 669 - lock_kernel(); 670 ret = hp_sdc_rtc_ioctl(file, cmd, arg); 671 - unlock_kernel(); 672 673 return ret; 674 }
··· 43 #include <linux/proc_fs.h> 44 #include <linux/poll.h> 45 #include <linux/rtc.h> 46 + #include <linux/mutex.h> 47 #include <linux/semaphore.h> 48 49 MODULE_AUTHOR("Brian S. Julin <bri@calyx.com>"); ··· 52 53 #define RTC_VERSION "1.10d" 54 55 + static DEFINE_MUTEX(hp_sdc_rtc_mutex); 56 static unsigned long epoch = 2000; 57 58 static struct semaphore i8042tregs; ··· 665 { 666 int ret; 667 668 + mutex_lock(&hp_sdc_rtc_mutex); 669 ret = hp_sdc_rtc_ioctl(file, cmd, arg); 670 + mutex_unlock(&hp_sdc_rtc_mutex); 671 672 return ret; 673 }
+5 -5
drivers/macintosh/adb.c
··· 24 #include <linux/fs.h> 25 #include <linux/mm.h> 26 #include <linux/sched.h> 27 - #include <linux/smp_lock.h> 28 #include <linux/adb.h> 29 #include <linux/cuda.h> 30 #include <linux/pmu.h> ··· 54 extern struct adb_driver via_pmu_driver; 55 extern struct adb_driver macio_adb_driver; 56 57 static struct adb_driver *adb_driver_list[] = { 58 #ifdef CONFIG_ADB_MACII 59 &via_macii_driver, ··· 647 struct adbdev_state *state; 648 int ret = 0; 649 650 - lock_kernel(); 651 if (iminor(inode) > 0 || adb_controller == NULL) { 652 ret = -ENXIO; 653 goto out; ··· 665 state->inuse = 1; 666 667 out: 668 - unlock_kernel(); 669 return ret; 670 } 671 ··· 674 struct adbdev_state *state = file->private_data; 675 unsigned long flags; 676 677 - lock_kernel(); 678 if (state) { 679 file->private_data = NULL; 680 spin_lock_irqsave(&state->lock, flags); ··· 687 spin_unlock_irqrestore(&state->lock, flags); 688 } 689 } 690 - unlock_kernel(); 691 return 0; 692 } 693
··· 24 #include <linux/fs.h> 25 #include <linux/mm.h> 26 #include <linux/sched.h> 27 #include <linux/adb.h> 28 #include <linux/cuda.h> 29 #include <linux/pmu.h> ··· 55 extern struct adb_driver via_pmu_driver; 56 extern struct adb_driver macio_adb_driver; 57 58 + static DEFINE_MUTEX(adb_mutex); 59 static struct adb_driver *adb_driver_list[] = { 60 #ifdef CONFIG_ADB_MACII 61 &via_macii_driver, ··· 647 struct adbdev_state *state; 648 int ret = 0; 649 650 + mutex_lock(&adb_mutex); 651 if (iminor(inode) > 0 || adb_controller == NULL) { 652 ret = -ENXIO; 653 goto out; ··· 665 state->inuse = 1; 666 667 out: 668 + mutex_unlock(&adb_mutex); 669 return ret; 670 } 671 ··· 674 struct adbdev_state *state = file->private_data; 675 unsigned long flags; 676 677 + mutex_lock(&adb_mutex); 678 if (state) { 679 file->private_data = NULL; 680 spin_lock_irqsave(&state->lock, flags); ··· 687 spin_unlock_irqrestore(&state->lock, flags); 688 } 689 } 690 + mutex_unlock(&adb_mutex); 691 return 0; 692 } 693
+3 -3
drivers/macintosh/smu.c
··· 19 * the userland interface 20 */ 21 22 - #include <linux/smp_lock.h> 23 #include <linux/types.h> 24 #include <linux/kernel.h> 25 #include <linux/device.h> ··· 96 * I don't think there will ever be more than one SMU, so 97 * for now, just hard code that 98 */ 99 static struct smu_device *smu; 100 static DEFINE_MUTEX(smu_part_access); 101 static int smu_irq_inited; ··· 1095 pp->mode = smu_file_commands; 1096 init_waitqueue_head(&pp->wait); 1097 1098 - lock_kernel(); 1099 spin_lock_irqsave(&smu_clist_lock, flags); 1100 list_add(&pp->list, &smu_clist); 1101 spin_unlock_irqrestore(&smu_clist_lock, flags); 1102 file->private_data = pp; 1103 - unlock_kernel(); 1104 1105 return 0; 1106 }
··· 19 * the userland interface 20 */ 21 22 #include <linux/types.h> 23 #include <linux/kernel.h> 24 #include <linux/device.h> ··· 97 * I don't think there will ever be more than one SMU, so 98 * for now, just hard code that 99 */ 100 + static DEFINE_MUTEX(smu_mutex); 101 static struct smu_device *smu; 102 static DEFINE_MUTEX(smu_part_access); 103 static int smu_irq_inited; ··· 1095 pp->mode = smu_file_commands; 1096 init_waitqueue_head(&pp->wait); 1097 1098 + mutex_lock(&smu_mutex); 1099 spin_lock_irqsave(&smu_clist_lock, flags); 1100 list_add(&pp->list, &smu_clist); 1101 spin_unlock_irqrestore(&smu_clist_lock, flags); 1102 file->private_data = pp; 1103 + mutex_unlock(&smu_mutex); 1104 1105 return 0; 1106 }
+6 -5
drivers/macintosh/via-pmu.c
··· 18 * 19 */ 20 #include <stdarg.h> 21 - #include <linux/smp_lock.h> 22 #include <linux/types.h> 23 #include <linux/errno.h> 24 #include <linux/kernel.h> ··· 73 /* How many iterations between battery polls */ 74 #define BATTERY_POLLING_COUNT 2 75 76 static volatile unsigned char __iomem *via; 77 78 /* VIA registers - spaced 0x200 bytes apart */ ··· 2079 pp->rb_get = pp->rb_put = 0; 2080 spin_lock_init(&pp->lock); 2081 init_waitqueue_head(&pp->wait); 2082 - lock_kernel(); 2083 spin_lock_irqsave(&all_pvt_lock, flags); 2084 #if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) 2085 pp->backlight_locker = 0; ··· 2087 list_add(&pp->list, &all_pmu_pvt); 2088 spin_unlock_irqrestore(&all_pvt_lock, flags); 2089 file->private_data = pp; 2090 - unlock_kernel(); 2091 return 0; 2092 } 2093 ··· 2344 { 2345 int ret; 2346 2347 - lock_kernel(); 2348 ret = pmu_ioctl(filp, cmd, arg); 2349 - unlock_kernel(); 2350 2351 return ret; 2352 }
··· 18 * 19 */ 20 #include <stdarg.h> 21 + #include <linux/mutex.h> 22 #include <linux/types.h> 23 #include <linux/errno.h> 24 #include <linux/kernel.h> ··· 73 /* How many iterations between battery polls */ 74 #define BATTERY_POLLING_COUNT 2 75 76 + static DEFINE_MUTEX(pmu_info_proc_mutex); 77 static volatile unsigned char __iomem *via; 78 79 /* VIA registers - spaced 0x200 bytes apart */ ··· 2078 pp->rb_get = pp->rb_put = 0; 2079 spin_lock_init(&pp->lock); 2080 init_waitqueue_head(&pp->wait); 2081 + mutex_lock(&pmu_info_proc_mutex); 2082 spin_lock_irqsave(&all_pvt_lock, flags); 2083 #if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) 2084 pp->backlight_locker = 0; ··· 2086 list_add(&pp->list, &all_pmu_pvt); 2087 spin_unlock_irqrestore(&all_pvt_lock, flags); 2088 file->private_data = pp; 2089 + mutex_unlock(&pmu_info_proc_mutex); 2090 return 0; 2091 } 2092 ··· 2343 { 2344 int ret; 2345 2346 + mutex_lock(&pmu_info_proc_mutex); 2347 ret = pmu_ioctl(filp, cmd, arg); 2348 + mutex_unlock(&pmu_info_proc_mutex); 2349 2350 return ret; 2351 }
+5 -5
drivers/md/dm.c
··· 15 #include <linux/blkpg.h> 16 #include <linux/bio.h> 17 #include <linux/buffer_head.h> 18 - #include <linux/smp_lock.h> 19 #include <linux/mempool.h> 20 #include <linux/slab.h> 21 #include <linux/idr.h> ··· 32 #define DM_COOKIE_ENV_VAR_NAME "DM_COOKIE" 33 #define DM_COOKIE_LENGTH 24 34 35 static const char *_name = DM_NAME; 36 37 static unsigned int major = 0; ··· 344 { 345 struct mapped_device *md; 346 347 - lock_kernel(); 348 spin_lock(&_minor_lock); 349 350 md = bdev->bd_disk->private_data; ··· 362 363 out: 364 spin_unlock(&_minor_lock); 365 - unlock_kernel(); 366 367 return md ? 0 : -ENXIO; 368 } ··· 371 { 372 struct mapped_device *md = disk->private_data; 373 374 - lock_kernel(); 375 atomic_dec(&md->open_count); 376 dm_put(md); 377 - unlock_kernel(); 378 379 return 0; 380 }
··· 15 #include <linux/blkpg.h> 16 #include <linux/bio.h> 17 #include <linux/buffer_head.h> 18 #include <linux/mempool.h> 19 #include <linux/slab.h> 20 #include <linux/idr.h> ··· 33 #define DM_COOKIE_ENV_VAR_NAME "DM_COOKIE" 34 #define DM_COOKIE_LENGTH 24 35 36 + static DEFINE_MUTEX(dm_mutex); 37 static const char *_name = DM_NAME; 38 39 static unsigned int major = 0; ··· 344 { 345 struct mapped_device *md; 346 347 + mutex_lock(&dm_mutex); 348 spin_lock(&_minor_lock); 349 350 md = bdev->bd_disk->private_data; ··· 362 363 out: 364 spin_unlock(&_minor_lock); 365 + mutex_unlock(&dm_mutex); 366 367 return md ? 0 : -ENXIO; 368 } ··· 371 { 372 struct mapped_device *md = disk->private_data; 373 374 + mutex_lock(&dm_mutex); 375 atomic_dec(&md->open_count); 376 dm_put(md); 377 + mutex_unlock(&dm_mutex); 378 379 return 0; 380 }
+7 -6
drivers/md/md.c
··· 36 #include <linux/blkdev.h> 37 #include <linux/sysctl.h> 38 #include <linux/seq_file.h> 39 - #include <linux/smp_lock.h> 40 #include <linux/buffer_head.h> /* for invalidate_bdev */ 41 #include <linux/poll.h> 42 #include <linux/ctype.h> ··· 57 #define DEBUG 0 58 #define dprintk(x...) ((void)(DEBUG && printk(x))) 59 60 61 #ifndef MODULE 62 static void autostart_arrays(int part); ··· 5952 mddev_t *mddev = mddev_find(bdev->bd_dev); 5953 int err; 5954 5955 - lock_kernel(); 5956 if (mddev->gendisk != bdev->bd_disk) { 5957 /* we are racing with mddev_put which is discarding this 5958 * bd_disk. ··· 5961 /* Wait until bdev->bd_disk is definitely gone */ 5962 flush_scheduled_work(); 5963 /* Then retry the open from the top */ 5964 - unlock_kernel(); 5965 return -ERESTARTSYS; 5966 } 5967 BUG_ON(mddev != bdev->bd_disk->private_data); ··· 5975 5976 check_disk_size_change(mddev->gendisk, bdev); 5977 out: 5978 - unlock_kernel(); 5979 return err; 5980 } 5981 ··· 5984 mddev_t *mddev = disk->private_data; 5985 5986 BUG_ON(!mddev); 5987 - lock_kernel(); 5988 atomic_dec(&mddev->openers); 5989 mddev_put(mddev); 5990 - unlock_kernel(); 5991 5992 return 0; 5993 }
··· 36 #include <linux/blkdev.h> 37 #include <linux/sysctl.h> 38 #include <linux/seq_file.h> 39 + #include <linux/mutex.h> 40 #include <linux/buffer_head.h> /* for invalidate_bdev */ 41 #include <linux/poll.h> 42 #include <linux/ctype.h> ··· 57 #define DEBUG 0 58 #define dprintk(x...) ((void)(DEBUG && printk(x))) 59 60 + static DEFINE_MUTEX(md_mutex); 61 62 #ifndef MODULE 63 static void autostart_arrays(int part); ··· 5951 mddev_t *mddev = mddev_find(bdev->bd_dev); 5952 int err; 5953 5954 + mutex_lock(&md_mutex); 5955 if (mddev->gendisk != bdev->bd_disk) { 5956 /* we are racing with mddev_put which is discarding this 5957 * bd_disk. ··· 5960 /* Wait until bdev->bd_disk is definitely gone */ 5961 flush_scheduled_work(); 5962 /* Then retry the open from the top */ 5963 + mutex_unlock(&md_mutex); 5964 return -ERESTARTSYS; 5965 } 5966 BUG_ON(mddev != bdev->bd_disk->private_data); ··· 5974 5975 check_disk_size_change(mddev->gendisk, bdev); 5976 out: 5977 + mutex_unlock(&md_mutex); 5978 return err; 5979 } 5980 ··· 5983 mddev_t *mddev = disk->private_data; 5984 5985 BUG_ON(!mddev); 5986 + mutex_lock(&md_mutex); 5987 atomic_dec(&mddev->openers); 5988 mddev_put(mddev); 5989 + mutex_unlock(&md_mutex); 5990 5991 return 0; 5992 }
+6 -5
drivers/memstick/core/mspro_block.c
··· 18 #include <linux/kthread.h> 19 #include <linux/delay.h> 20 #include <linux/slab.h> 21 - #include <linux/smp_lock.h> 22 #include <linux/memstick.h> 23 24 #define DRIVER_NAME "mspro_block" 25 26 static int major; 27 module_param(major, int, 0644); 28 ··· 181 struct mspro_block_data *msb = disk->private_data; 182 int rc = -ENXIO; 183 184 - lock_kernel(); 185 mutex_lock(&mspro_block_disk_lock); 186 187 if (msb && msb->card) { ··· 193 } 194 195 mutex_unlock(&mspro_block_disk_lock); 196 - unlock_kernel(); 197 198 return rc; 199 } ··· 226 static int mspro_block_bd_release(struct gendisk *disk, fmode_t mode) 227 { 228 int ret; 229 - lock_kernel(); 230 ret = mspro_block_disk_release(disk); 231 - unlock_kernel(); 232 return ret; 233 } 234
··· 18 #include <linux/kthread.h> 19 #include <linux/delay.h> 20 #include <linux/slab.h> 21 + #include <linux/mutex.h> 22 #include <linux/memstick.h> 23 24 #define DRIVER_NAME "mspro_block" 25 26 + static DEFINE_MUTEX(mspro_block_mutex); 27 static int major; 28 module_param(major, int, 0644); 29 ··· 180 struct mspro_block_data *msb = disk->private_data; 181 int rc = -ENXIO; 182 183 + mutex_lock(&mspro_block_mutex); 184 mutex_lock(&mspro_block_disk_lock); 185 186 if (msb && msb->card) { ··· 192 } 193 194 mutex_unlock(&mspro_block_disk_lock); 195 + mutex_unlock(&mspro_block_mutex); 196 197 return rc; 198 } ··· 225 static int mspro_block_bd_release(struct gendisk *disk, fmode_t mode) 226 { 227 int ret; 228 + mutex_lock(&mspro_block_mutex); 229 ret = mspro_block_disk_release(disk); 230 + mutex_unlock(&mspro_block_mutex); 231 return ret; 232 } 233
+8 -7
drivers/message/fusion/mptctl.c
··· 54 #include <linux/pci.h> 55 #include <linux/delay.h> /* for mdelay */ 56 #include <linux/miscdevice.h> 57 - #include <linux/smp_lock.h> 58 #include <linux/compat.h> 59 60 #include <asm/io.h> ··· 83 84 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 85 86 static u8 mptctl_id = MPT_MAX_PROTOCOL_DRIVERS; 87 static u8 mptctl_taskmgmt_id = MPT_MAX_PROTOCOL_DRIVERS; 88 ··· 602 MPT_ADAPTER *ioc; 603 int ret; 604 605 - lock_kernel(); 606 list_for_each_entry(ioc, &ioc_list, list) 607 ioc->aen_event_read_flag=0; 608 609 ret = fasync_helper(fd, filep, mode, &async_queue); 610 - unlock_kernel(); 611 return ret; 612 } 613 ··· 699 mptctl_ioctl(struct file *file, unsigned int cmd, unsigned long arg) 700 { 701 long ret; 702 - lock_kernel(); 703 ret = __mptctl_ioctl(file, cmd, arg); 704 - unlock_kernel(); 705 return ret; 706 } 707 ··· 2927 static long compat_mpctl_ioctl(struct file *f, unsigned int cmd, unsigned long arg) 2928 { 2929 long ret; 2930 - lock_kernel(); 2931 switch (cmd) { 2932 case MPTIOCINFO: 2933 case MPTIOCINFO1: ··· 2952 ret = -ENOIOCTLCMD; 2953 break; 2954 } 2955 - unlock_kernel(); 2956 return ret; 2957 } 2958
··· 54 #include <linux/pci.h> 55 #include <linux/delay.h> /* for mdelay */ 56 #include <linux/miscdevice.h> 57 + #include <linux/mutex.h> 58 #include <linux/compat.h> 59 60 #include <asm/io.h> ··· 83 84 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 85 86 + static DEFINE_MUTEX(mpctl_mutex); 87 static u8 mptctl_id = MPT_MAX_PROTOCOL_DRIVERS; 88 static u8 mptctl_taskmgmt_id = MPT_MAX_PROTOCOL_DRIVERS; 89 ··· 601 MPT_ADAPTER *ioc; 602 int ret; 603 604 + mutex_lock(&mpctl_mutex); 605 list_for_each_entry(ioc, &ioc_list, list) 606 ioc->aen_event_read_flag=0; 607 608 ret = fasync_helper(fd, filep, mode, &async_queue); 609 + mutex_unlock(&mpctl_mutex); 610 return ret; 611 } 612 ··· 698 mptctl_ioctl(struct file *file, unsigned int cmd, unsigned long arg) 699 { 700 long ret; 701 + mutex_lock(&mpctl_mutex); 702 ret = __mptctl_ioctl(file, cmd, arg); 703 + mutex_unlock(&mpctl_mutex); 704 return ret; 705 } 706 ··· 2926 static long compat_mpctl_ioctl(struct file *f, unsigned int cmd, unsigned long arg) 2927 { 2928 long ret; 2929 + mutex_lock(&mpctl_mutex); 2930 switch (cmd) { 2931 case MPTIOCINFO: 2932 case MPTIOCINFO1: ··· 2951 ret = -ENOIOCTLCMD; 2952 break; 2953 } 2954 + mutex_unlock(&mpctl_mutex); 2955 return ret; 2956 } 2957
+8 -7
drivers/message/i2o/i2o_block.c
··· 53 #include <linux/module.h> 54 #include <linux/slab.h> 55 #include <linux/i2o.h> 56 - #include <linux/smp_lock.h> 57 58 #include <linux/mempool.h> 59 ··· 69 #define OSM_VERSION "1.325" 70 #define OSM_DESCRIPTION "I2O Block Device OSM" 71 72 static struct i2o_driver i2o_block_driver; 73 74 /* global Block OSM request mempool */ ··· 579 if (!dev->i2o_dev) 580 return -ENODEV; 581 582 - lock_kernel(); 583 if (dev->power > 0x1f) 584 i2o_block_device_power(dev, 0x02); 585 ··· 588 i2o_block_device_lock(dev->i2o_dev, -1); 589 590 osm_debug("Ready.\n"); 591 - unlock_kernel(); 592 593 return 0; 594 }; ··· 619 if (!dev->i2o_dev) 620 return 0; 621 622 - lock_kernel(); 623 i2o_block_device_flush(dev->i2o_dev); 624 625 i2o_block_device_unlock(dev->i2o_dev, -1); ··· 630 operation = 0x24; 631 632 i2o_block_device_power(dev, operation); 633 - unlock_kernel(); 634 635 return 0; 636 } ··· 665 if (!capable(CAP_SYS_ADMIN)) 666 return -EPERM; 667 668 - lock_kernel(); 669 switch (cmd) { 670 case BLKI2OGRSTRAT: 671 ret = put_user(dev->rcache, (int __user *)arg); ··· 689 ret = 0; 690 break; 691 } 692 - unlock_kernel(); 693 694 return ret; 695 };
··· 53 #include <linux/module.h> 54 #include <linux/slab.h> 55 #include <linux/i2o.h> 56 + #include <linux/mutex.h> 57 58 #include <linux/mempool.h> 59 ··· 69 #define OSM_VERSION "1.325" 70 #define OSM_DESCRIPTION "I2O Block Device OSM" 71 72 + static DEFINE_MUTEX(i2o_block_mutex); 73 static struct i2o_driver i2o_block_driver; 74 75 /* global Block OSM request mempool */ ··· 578 if (!dev->i2o_dev) 579 return -ENODEV; 580 581 + mutex_lock(&i2o_block_mutex); 582 if (dev->power > 0x1f) 583 i2o_block_device_power(dev, 0x02); 584 ··· 587 i2o_block_device_lock(dev->i2o_dev, -1); 588 589 osm_debug("Ready.\n"); 590 + mutex_unlock(&i2o_block_mutex); 591 592 return 0; 593 }; ··· 618 if (!dev->i2o_dev) 619 return 0; 620 621 + mutex_lock(&i2o_block_mutex); 622 i2o_block_device_flush(dev->i2o_dev); 623 624 i2o_block_device_unlock(dev->i2o_dev, -1); ··· 629 operation = 0x24; 630 631 i2o_block_device_power(dev, operation); 632 + mutex_unlock(&i2o_block_mutex); 633 634 return 0; 635 } ··· 664 if (!capable(CAP_SYS_ADMIN)) 665 return -EPERM; 666 667 + mutex_lock(&i2o_block_mutex); 668 switch (cmd) { 669 case BLKI2OGRSTRAT: 670 ret = put_user(dev->rcache, (int __user *)arg); ··· 688 ret = 0; 689 break; 690 } 691 + mutex_unlock(&i2o_block_mutex); 692 693 return ret; 694 };
+12 -11
drivers/message/i2o/i2o_config.c
··· 31 */ 32 33 #include <linux/miscdevice.h> 34 - #include <linux/smp_lock.h> 35 #include <linux/compat.h> 36 #include <linux/slab.h> 37 ··· 41 42 #define SG_TABLESIZE 30 43 44 static long i2o_cfg_ioctl(struct file *, unsigned int, unsigned long); 45 46 static spinlock_t i2o_config_lock; ··· 742 unsigned long arg) 743 { 744 int ret; 745 - lock_kernel(); 746 switch (cmd) { 747 case I2OGETIOPS: 748 ret = i2o_cfg_ioctl(file, cmd, arg); ··· 754 ret = -ENOIOCTLCMD; 755 break; 756 } 757 - unlock_kernel(); 758 return ret; 759 } 760 ··· 982 { 983 int ret; 984 985 - lock_kernel(); 986 switch (cmd) { 987 case I2OGETIOPS: 988 ret = i2o_cfg_getiops(arg); ··· 1038 osm_debug("unknown ioctl called!\n"); 1039 ret = -EINVAL; 1040 } 1041 - unlock_kernel(); 1042 return ret; 1043 } 1044 ··· 1052 if (!tmp) 1053 return -ENOMEM; 1054 1055 - lock_kernel(); 1056 file->private_data = (void *)(i2o_cfg_info_id++); 1057 tmp->fp = file; 1058 tmp->fasync = NULL; ··· 1066 spin_lock_irqsave(&i2o_config_lock, flags); 1067 open_files = tmp; 1068 spin_unlock_irqrestore(&i2o_config_lock, flags); 1069 - unlock_kernel(); 1070 1071 return 0; 1072 } ··· 1077 struct i2o_cfg_info *p; 1078 int ret = -EBADF; 1079 1080 - lock_kernel(); 1081 for (p = open_files; p; p = p->next) 1082 if (p->q_id == id) 1083 break; 1084 1085 if (p) 1086 ret = fasync_helper(fd, fp, on, &p->fasync); 1087 - unlock_kernel(); 1088 return ret; 1089 } 1090 ··· 1094 struct i2o_cfg_info *p, **q; 1095 unsigned long flags; 1096 1097 - lock_kernel(); 1098 spin_lock_irqsave(&i2o_config_lock, flags); 1099 for (q = &open_files; (p = *q) != NULL; q = &p->next) { 1100 if (p->q_id == id) { ··· 1104 } 1105 } 1106 spin_unlock_irqrestore(&i2o_config_lock, flags); 1107 - unlock_kernel(); 1108 1109 return 0; 1110 }
··· 31 */ 32 33 #include <linux/miscdevice.h> 34 + #include <linux/mutex.h> 35 #include <linux/compat.h> 36 #include <linux/slab.h> 37 ··· 41 42 #define SG_TABLESIZE 30 43 44 + static DEFINE_MUTEX(i2o_cfg_mutex); 45 static long i2o_cfg_ioctl(struct file *, unsigned int, unsigned long); 46 47 static spinlock_t i2o_config_lock; ··· 741 unsigned long arg) 742 { 743 int ret; 744 + mutex_lock(&i2o_cfg_mutex); 745 switch (cmd) { 746 case I2OGETIOPS: 747 ret = i2o_cfg_ioctl(file, cmd, arg); ··· 753 ret = -ENOIOCTLCMD; 754 break; 755 } 756 + mutex_unlock(&i2o_cfg_mutex); 757 return ret; 758 } 759 ··· 981 { 982 int ret; 983 984 + mutex_lock(&i2o_cfg_mutex); 985 switch (cmd) { 986 case I2OGETIOPS: 987 ret = i2o_cfg_getiops(arg); ··· 1037 osm_debug("unknown ioctl called!\n"); 1038 ret = -EINVAL; 1039 } 1040 + mutex_unlock(&i2o_cfg_mutex); 1041 return ret; 1042 } 1043 ··· 1051 if (!tmp) 1052 return -ENOMEM; 1053 1054 + mutex_lock(&i2o_cfg_mutex); 1055 file->private_data = (void *)(i2o_cfg_info_id++); 1056 tmp->fp = file; 1057 tmp->fasync = NULL; ··· 1065 spin_lock_irqsave(&i2o_config_lock, flags); 1066 open_files = tmp; 1067 spin_unlock_irqrestore(&i2o_config_lock, flags); 1068 + mutex_unlock(&i2o_cfg_mutex); 1069 1070 return 0; 1071 } ··· 1076 struct i2o_cfg_info *p; 1077 int ret = -EBADF; 1078 1079 + mutex_lock(&i2o_cfg_mutex); 1080 for (p = open_files; p; p = p->next) 1081 if (p->q_id == id) 1082 break; 1083 1084 if (p) 1085 ret = fasync_helper(fd, fp, on, &p->fasync); 1086 + mutex_unlock(&i2o_cfg_mutex); 1087 return ret; 1088 } 1089 ··· 1093 struct i2o_cfg_info *p, **q; 1094 unsigned long flags; 1095 1096 + mutex_lock(&i2o_cfg_mutex); 1097 spin_lock_irqsave(&i2o_config_lock, flags); 1098 for (q = &open_files; (p = *q) != NULL; q = &p->next) { 1099 if (p->q_id == id) { ··· 1103 } 1104 } 1105 spin_unlock_irqrestore(&i2o_config_lock, flags); 1106 + mutex_unlock(&i2o_cfg_mutex); 1107 1108 return 0; 1109 }
+6 -5
drivers/misc/phantom.c
··· 24 #include <linux/slab.h> 25 #include <linux/phantom.h> 26 #include <linux/sched.h> 27 - #include <linux/smp_lock.h> 28 29 #include <asm/atomic.h> 30 #include <asm/io.h> ··· 38 #define PHB_RUNNING 1 39 #define PHB_NOT_OH 2 40 41 static struct class *phantom_class; 42 static int phantom_major; 43 ··· 216 struct phantom_device *dev = container_of(inode->i_cdev, 217 struct phantom_device, cdev); 218 219 - lock_kernel(); 220 nonseekable_open(inode, file); 221 222 if (mutex_lock_interruptible(&dev->open_lock)) { 223 - unlock_kernel(); 224 return -ERESTARTSYS; 225 } 226 227 if (dev->opened) { 228 mutex_unlock(&dev->open_lock); 229 - unlock_kernel(); 230 return -EINVAL; 231 } 232 ··· 237 atomic_set(&dev->counter, 0); 238 dev->opened++; 239 mutex_unlock(&dev->open_lock); 240 - unlock_kernel(); 241 return 0; 242 } 243
··· 24 #include <linux/slab.h> 25 #include <linux/phantom.h> 26 #include <linux/sched.h> 27 + #include <linux/mutex.h> 28 29 #include <asm/atomic.h> 30 #include <asm/io.h> ··· 38 #define PHB_RUNNING 1 39 #define PHB_NOT_OH 2 40 41 + static DEFINE_MUTEX(phantom_mutex); 42 static struct class *phantom_class; 43 static int phantom_major; 44 ··· 215 struct phantom_device *dev = container_of(inode->i_cdev, 216 struct phantom_device, cdev); 217 218 + mutex_lock(&phantom_mutex); 219 nonseekable_open(inode, file); 220 221 if (mutex_lock_interruptible(&dev->open_lock)) { 222 + mutex_unlock(&phantom_mutex); 223 return -ERESTARTSYS; 224 } 225 226 if (dev->opened) { 227 mutex_unlock(&dev->open_lock); 228 + mutex_unlock(&phantom_mutex); 229 return -EINVAL; 230 } 231 ··· 236 atomic_set(&dev->counter, 0); 237 dev->opened++; 238 mutex_unlock(&dev->open_lock); 239 + mutex_unlock(&phantom_mutex); 240 return 0; 241 } 242
+5 -5
drivers/mmc/card/block.c
··· 29 #include <linux/kdev_t.h> 30 #include <linux/blkdev.h> 31 #include <linux/mutex.h> 32 - #include <linux/smp_lock.h> 33 #include <linux/scatterlist.h> 34 #include <linux/string_helpers.h> 35 ··· 50 #define MMC_SHIFT 3 51 #define MMC_NUM_MINORS (256 >> MMC_SHIFT) 52 53 static DECLARE_BITMAP(dev_use, MMC_NUM_MINORS); 54 55 /* ··· 108 struct mmc_blk_data *md = mmc_blk_get(bdev->bd_disk); 109 int ret = -ENXIO; 110 111 - lock_kernel(); 112 if (md) { 113 if (md->usage == 2) 114 check_disk_change(bdev); ··· 119 ret = -EROFS; 120 } 121 } 122 - unlock_kernel(); 123 124 return ret; 125 } ··· 128 { 129 struct mmc_blk_data *md = disk->private_data; 130 131 - lock_kernel(); 132 mmc_blk_put(md); 133 - unlock_kernel(); 134 return 0; 135 } 136
··· 29 #include <linux/kdev_t.h> 30 #include <linux/blkdev.h> 31 #include <linux/mutex.h> 32 #include <linux/scatterlist.h> 33 #include <linux/string_helpers.h> 34 ··· 51 #define MMC_SHIFT 3 52 #define MMC_NUM_MINORS (256 >> MMC_SHIFT) 53 54 + static DEFINE_MUTEX(block_mutex); 55 static DECLARE_BITMAP(dev_use, MMC_NUM_MINORS); 56 57 /* ··· 108 struct mmc_blk_data *md = mmc_blk_get(bdev->bd_disk); 109 int ret = -ENXIO; 110 111 + mutex_lock(&block_mutex); 112 if (md) { 113 if (md->usage == 2) 114 check_disk_change(bdev); ··· 119 ret = -EROFS; 120 } 121 } 122 + mutex_unlock(&block_mutex); 123 124 return ret; 125 } ··· 128 { 129 struct mmc_blk_data *md = disk->private_data; 130 131 + mutex_lock(&block_mutex); 132 mmc_blk_put(md); 133 + mutex_unlock(&block_mutex); 134 return 0; 135 } 136
+7 -7
drivers/mtd/mtd_blkdevs.c
··· 29 #include <linux/blkdev.h> 30 #include <linux/blkpg.h> 31 #include <linux/spinlock.h> 32 - #include <linux/smp_lock.h> 33 #include <linux/hdreg.h> 34 #include <linux/init.h> 35 #include <linux/mutex.h> ··· 37 38 #include "mtdcore.h" 39 40 static LIST_HEAD(blktrans_majors); 41 static DEFINE_MUTEX(blktrans_ref_mutex); 42 ··· 181 if (!dev) 182 return -ERESTARTSYS; /* FIXME: busy loop! -arnd*/ 183 184 - lock_kernel(); 185 mutex_lock(&dev->lock); 186 187 if (!dev->mtd) { ··· 198 unlock: 199 mutex_unlock(&dev->lock); 200 blktrans_dev_put(dev); 201 - unlock_kernel(); 202 return ret; 203 } 204 ··· 210 if (!dev) 211 return ret; 212 213 - lock_kernel(); 214 mutex_lock(&dev->lock); 215 216 /* Release one reference, we sure its not the last one here*/ ··· 223 unlock: 224 mutex_unlock(&dev->lock); 225 blktrans_dev_put(dev); 226 - unlock_kernel(); 227 return ret; 228 } 229 ··· 256 if (!dev) 257 return ret; 258 259 - lock_kernel(); 260 mutex_lock(&dev->lock); 261 262 if (!dev->mtd) ··· 271 } 272 unlock: 273 mutex_unlock(&dev->lock); 274 - unlock_kernel(); 275 blktrans_dev_put(dev); 276 return ret; 277 }
··· 29 #include <linux/blkdev.h> 30 #include <linux/blkpg.h> 31 #include <linux/spinlock.h> 32 #include <linux/hdreg.h> 33 #include <linux/init.h> 34 #include <linux/mutex.h> ··· 38 39 #include "mtdcore.h" 40 41 + static DEFINE_MUTEX(mtd_blkdevs_mutex); 42 static LIST_HEAD(blktrans_majors); 43 static DEFINE_MUTEX(blktrans_ref_mutex); 44 ··· 181 if (!dev) 182 return -ERESTARTSYS; /* FIXME: busy loop! -arnd*/ 183 184 + mutex_lock(&mtd_blkdevs_mutex); 185 mutex_lock(&dev->lock); 186 187 if (!dev->mtd) { ··· 198 unlock: 199 mutex_unlock(&dev->lock); 200 blktrans_dev_put(dev); 201 + mutex_unlock(&mtd_blkdevs_mutex); 202 return ret; 203 } 204 ··· 210 if (!dev) 211 return ret; 212 213 + mutex_lock(&mtd_blkdevs_mutex); 214 mutex_lock(&dev->lock); 215 216 /* Release one reference, we sure its not the last one here*/ ··· 223 unlock: 224 mutex_unlock(&dev->lock); 225 blktrans_dev_put(dev); 226 + mutex_unlock(&mtd_blkdevs_mutex); 227 return ret; 228 } 229 ··· 256 if (!dev) 257 return ret; 258 259 + mutex_lock(&mtd_blkdevs_mutex); 260 mutex_lock(&dev->lock); 261 262 if (!dev->mtd) ··· 271 } 272 unlock: 273 mutex_unlock(&dev->lock); 274 + mutex_unlock(&mtd_blkdevs_mutex); 275 blktrans_dev_put(dev); 276 return ret; 277 }
+8 -7
drivers/mtd/mtdchar.c
··· 26 #include <linux/module.h> 27 #include <linux/slab.h> 28 #include <linux/sched.h> 29 - #include <linux/smp_lock.h> 30 #include <linux/backing-dev.h> 31 #include <linux/compat.h> 32 #include <linux/mount.h> ··· 37 #include <asm/uaccess.h> 38 39 #define MTD_INODE_FS_MAGIC 0x11307854 40 static struct vfsmount *mtd_inode_mnt __read_mostly; 41 42 /* ··· 91 if ((file->f_mode & FMODE_WRITE) && (minor & 1)) 92 return -EACCES; 93 94 - lock_kernel(); 95 mtd = get_mtd_device(NULL, devnum); 96 97 if (IS_ERR(mtd)) { ··· 139 file->private_data = mfi; 140 141 out: 142 - unlock_kernel(); 143 return ret; 144 } /* mtd_open */ 145 ··· 867 { 868 int ret; 869 870 - lock_kernel(); 871 ret = mtd_ioctl(file, cmd, arg); 872 - unlock_kernel(); 873 874 return ret; 875 } ··· 893 void __user *argp = compat_ptr(arg); 894 int ret = 0; 895 896 - lock_kernel(); 897 898 switch (cmd) { 899 case MEMWRITEOOB32: ··· 928 ret = mtd_ioctl(file, cmd, (unsigned long)argp); 929 } 930 931 - unlock_kernel(); 932 933 return ret; 934 }
··· 26 #include <linux/module.h> 27 #include <linux/slab.h> 28 #include <linux/sched.h> 29 + #include <linux/mutex.h> 30 #include <linux/backing-dev.h> 31 #include <linux/compat.h> 32 #include <linux/mount.h> ··· 37 #include <asm/uaccess.h> 38 39 #define MTD_INODE_FS_MAGIC 0x11307854 40 + static DEFINE_MUTEX(mtd_mutex); 41 static struct vfsmount *mtd_inode_mnt __read_mostly; 42 43 /* ··· 90 if ((file->f_mode & FMODE_WRITE) && (minor & 1)) 91 return -EACCES; 92 93 + mutex_lock(&mtd_mutex); 94 mtd = get_mtd_device(NULL, devnum); 95 96 if (IS_ERR(mtd)) { ··· 138 file->private_data = mfi; 139 140 out: 141 + mutex_unlock(&mtd_mutex); 142 return ret; 143 } /* mtd_open */ 144 ··· 866 { 867 int ret; 868 869 + mutex_lock(&mtd_mutex); 870 ret = mtd_ioctl(file, cmd, arg); 871 + mutex_unlock(&mtd_mutex); 872 873 return ret; 874 } ··· 892 void __user *argp = compat_ptr(arg); 893 int ret = 0; 894 895 + mutex_lock(&mtd_mutex); 896 897 switch (cmd) { 898 case MEMWRITEOOB32: ··· 927 ret = mtd_ioctl(file, cmd, (unsigned long)argp); 928 } 929 930 + mutex_unlock(&mtd_mutex); 931 932 return ret; 933 }
+7 -6
drivers/pci/hotplug/cpqphp_sysfs.c
··· 34 #include <linux/workqueue.h> 35 #include <linux/pci.h> 36 #include <linux/pci_hotplug.h> 37 - #include <linux/smp_lock.h> 38 #include <linux/debugfs.h> 39 #include "cpqphp.h" 40 41 static int show_ctrl (struct controller *ctrl, char *buf) 42 { 43 char *out = buf; ··· 148 struct ctrl_dbg *dbg; 149 int retval = -ENOMEM; 150 151 - lock_kernel(); 152 dbg = kmalloc(sizeof(*dbg), GFP_KERNEL); 153 if (!dbg) 154 goto exit; ··· 161 file->private_data = dbg; 162 retval = 0; 163 exit: 164 - unlock_kernel(); 165 return retval; 166 } 167 ··· 170 struct ctrl_dbg *dbg; 171 loff_t new = -1; 172 173 - lock_kernel(); 174 dbg = file->private_data; 175 176 switch (whence) { ··· 182 break; 183 } 184 if (new < 0 || new > dbg->size) { 185 - unlock_kernel(); 186 return -EINVAL; 187 } 188 - unlock_kernel(); 189 return (file->f_pos = new); 190 } 191
··· 34 #include <linux/workqueue.h> 35 #include <linux/pci.h> 36 #include <linux/pci_hotplug.h> 37 + #include <linux/mutex.h> 38 #include <linux/debugfs.h> 39 #include "cpqphp.h" 40 41 + static DEFINE_MUTEX(cpqphp_mutex); 42 static int show_ctrl (struct controller *ctrl, char *buf) 43 { 44 char *out = buf; ··· 147 struct ctrl_dbg *dbg; 148 int retval = -ENOMEM; 149 150 + mutex_lock(&cpqphp_mutex); 151 dbg = kmalloc(sizeof(*dbg), GFP_KERNEL); 152 if (!dbg) 153 goto exit; ··· 160 file->private_data = dbg; 161 retval = 0; 162 exit: 163 + mutex_unlock(&cpqphp_mutex); 164 return retval; 165 } 166 ··· 169 struct ctrl_dbg *dbg; 170 loff_t new = -1; 171 172 + mutex_lock(&cpqphp_mutex); 173 dbg = file->private_data; 174 175 switch (whence) { ··· 181 break; 182 } 183 if (new < 0 || new > dbg->size) { 184 + mutex_unlock(&cpqphp_mutex); 185 return -EINVAL; 186 } 187 + mutex_unlock(&cpqphp_mutex); 188 return (file->f_pos = new); 189 } 190
+7 -6
drivers/rtc/rtc-m41t80.c
··· 20 #include <linux/module.h> 21 #include <linux/rtc.h> 22 #include <linux/slab.h> 23 - #include <linux/smp_lock.h> 24 #include <linux/string.h> 25 #ifdef CONFIG_RTC_DRV_M41T80_WDT 26 #include <linux/fs.h> ··· 68 69 #define DRV_VERSION "0.05" 70 71 static const struct i2c_device_id m41t80_id[] = { 72 { "m41t62", M41T80_FEATURE_SQ | M41T80_FEATURE_SQ_ALT }, 73 { "m41t65", M41T80_FEATURE_HT | M41T80_FEATURE_WD }, ··· 678 { 679 int ret; 680 681 - lock_kernel(); 682 ret = wdt_ioctl(file, cmd, arg); 683 - unlock_kernel(); 684 685 return ret; 686 } ··· 694 static int wdt_open(struct inode *inode, struct file *file) 695 { 696 if (MINOR(inode->i_rdev) == WATCHDOG_MINOR) { 697 - lock_kernel(); 698 if (test_and_set_bit(0, &wdt_is_open)) { 699 - unlock_kernel(); 700 return -EBUSY; 701 } 702 /* 703 * Activate 704 */ 705 wdt_is_open = 1; 706 - unlock_kernel(); 707 return nonseekable_open(inode, file); 708 } 709 return -ENODEV;
··· 20 #include <linux/module.h> 21 #include <linux/rtc.h> 22 #include <linux/slab.h> 23 + #include <linux/mutex.h> 24 #include <linux/string.h> 25 #ifdef CONFIG_RTC_DRV_M41T80_WDT 26 #include <linux/fs.h> ··· 68 69 #define DRV_VERSION "0.05" 70 71 + static DEFINE_MUTEX(m41t80_rtc_mutex); 72 static const struct i2c_device_id m41t80_id[] = { 73 { "m41t62", M41T80_FEATURE_SQ | M41T80_FEATURE_SQ_ALT }, 74 { "m41t65", M41T80_FEATURE_HT | M41T80_FEATURE_WD }, ··· 677 { 678 int ret; 679 680 + mutex_lock(&m41t80_rtc_mutex); 681 ret = wdt_ioctl(file, cmd, arg); 682 + mutex_unlock(&m41t80_rtc_mutex); 683 684 return ret; 685 } ··· 693 static int wdt_open(struct inode *inode, struct file *file) 694 { 695 if (MINOR(inode->i_rdev) == WATCHDOG_MINOR) { 696 + mutex_lock(&m41t80_rtc_mutex); 697 if (test_and_set_bit(0, &wdt_is_open)) { 698 + mutex_unlock(&m41t80_rtc_mutex); 699 return -EBUSY; 700 } 701 /* 702 * Activate 703 */ 704 wdt_is_open = 1; 705 + mutex_unlock(&m41t80_rtc_mutex); 706 return nonseekable_open(inode, file); 707 } 708 return -ENODEV;
+7 -6
drivers/s390/char/tape_block.c
··· 16 #include <linux/fs.h> 17 #include <linux/module.h> 18 #include <linux/blkdev.h> 19 - #include <linux/smp_lock.h> 20 #include <linux/interrupt.h> 21 #include <linux/buffer_head.h> 22 #include <linux/kernel.h> ··· 45 /* 46 * file operation structure for tape block frontend 47 */ 48 static int tapeblock_open(struct block_device *, fmode_t); 49 static int tapeblock_release(struct gendisk *, fmode_t); 50 static int tapeblock_medium_changed(struct gendisk *); ··· 362 struct tape_device * device; 363 int rc; 364 365 - lock_kernel(); 366 device = tape_get_device(disk->private_data); 367 368 if (device->required_tapemarks) { ··· 386 * is called. 387 */ 388 tape_state_set(device, TS_BLKUSE); 389 - unlock_kernel(); 390 return 0; 391 392 release: 393 tape_release(device); 394 put_device: 395 tape_put_device(device); 396 - unlock_kernel(); 397 return rc; 398 } 399 ··· 408 { 409 struct tape_device *device = disk->private_data; 410 411 - lock_kernel(); 412 tape_state_set(device, TS_IN_USE); 413 tape_release(device); 414 tape_put_device(device); 415 - unlock_kernel(); 416 417 return 0; 418 }
··· 16 #include <linux/fs.h> 17 #include <linux/module.h> 18 #include <linux/blkdev.h> 19 + #include <linux/mutex.h> 20 #include <linux/interrupt.h> 21 #include <linux/buffer_head.h> 22 #include <linux/kernel.h> ··· 45 /* 46 * file operation structure for tape block frontend 47 */ 48 + static DEFINE_MUTEX(tape_block_mutex); 49 static int tapeblock_open(struct block_device *, fmode_t); 50 static int tapeblock_release(struct gendisk *, fmode_t); 51 static int tapeblock_medium_changed(struct gendisk *); ··· 361 struct tape_device * device; 362 int rc; 363 364 + mutex_lock(&tape_block_mutex); 365 device = tape_get_device(disk->private_data); 366 367 if (device->required_tapemarks) { ··· 385 * is called. 386 */ 387 tape_state_set(device, TS_BLKUSE); 388 + mutex_unlock(&tape_block_mutex); 389 return 0; 390 391 release: 392 tape_release(device); 393 put_device: 394 tape_put_device(device); 395 + mutex_unlock(&tape_block_mutex); 396 return rc; 397 } 398 ··· 407 { 408 struct tape_device *device = disk->private_data; 409 410 + mutex_lock(&tape_block_mutex); 411 tape_state_set(device, TS_IN_USE); 412 tape_release(device); 413 tape_put_device(device); 414 + mutex_unlock(&tape_block_mutex); 415 416 return 0; 417 }
+13 -11
drivers/sbus/char/jsflash.c
··· 27 */ 28 29 #include <linux/module.h> 30 - #include <linux/smp_lock.h> 31 #include <linux/types.h> 32 #include <linux/errno.h> 33 #include <linux/miscdevice.h> ··· 67 #define JSF_NPART 3 /* 3 minors per flash device */ 68 #define JSF_PART_BITS 2 /* 2 bits of minors to cover JSF_NPART */ 69 #define JSF_PART_MASK 0x3 /* 2 bits mask */ 70 71 /* 72 * Access functions. ··· 227 { 228 loff_t ret; 229 230 - lock_kernel(); 231 switch (orig) { 232 case 0: 233 file->f_pos = offset; ··· 240 default: 241 ret = -EINVAL; 242 } 243 - unlock_kernel(); 244 return ret; 245 } 246 ··· 386 387 static long jsf_ioctl(struct file *f, unsigned int cmd, unsigned long arg) 388 { 389 - lock_kernel(); 390 int error = -ENOTTY; 391 void __user *argp = (void __user *)arg; 392 393 if (!capable(CAP_SYS_ADMIN)) { 394 - unlock_kernel(); 395 return -EPERM; 396 } 397 switch (cmd) { 398 case JSFLASH_IDENT: 399 if (copy_to_user(argp, &jsf0.id, JSFIDSZ)) { 400 - unlock_kernel(); 401 return -EFAULT; 402 } 403 break; ··· 409 break; 410 } 411 412 - unlock_kernel(); 413 return error; 414 } 415 ··· 420 421 static int jsf_open(struct inode * inode, struct file * filp) 422 { 423 - lock_kernel(); 424 if (jsf0.base == 0) { 425 - unlock_kernel(); 426 return -ENXIO; 427 } 428 if (test_and_set_bit(0, (void *)&jsf0.busy) != 0) { 429 - unlock_kernel(); 430 return -EBUSY; 431 } 432 433 - unlock_kernel(); 434 return 0; /* XXX What security? */ 435 } 436
··· 27 */ 28 29 #include <linux/module.h> 30 + #include <linux/mutex.h> 31 #include <linux/types.h> 32 #include <linux/errno.h> 33 #include <linux/miscdevice.h> ··· 67 #define JSF_NPART 3 /* 3 minors per flash device */ 68 #define JSF_PART_BITS 2 /* 2 bits of minors to cover JSF_NPART */ 69 #define JSF_PART_MASK 0x3 /* 2 bits mask */ 70 + 71 + static DEFINE_MUTEX(jsf_mutex); 72 73 /* 74 * Access functions. ··· 225 { 226 loff_t ret; 227 228 + mutex_lock(&jsf_mutex); 229 switch (orig) { 230 case 0: 231 file->f_pos = offset; ··· 238 default: 239 ret = -EINVAL; 240 } 241 + mutex_unlock(&jsf_mutex); 242 return ret; 243 } 244 ··· 384 385 static long jsf_ioctl(struct file *f, unsigned int cmd, unsigned long arg) 386 { 387 + mutex_lock(&jsf_mutex); 388 int error = -ENOTTY; 389 void __user *argp = (void __user *)arg; 390 391 if (!capable(CAP_SYS_ADMIN)) { 392 + mutex_unlock(&jsf_mutex); 393 return -EPERM; 394 } 395 switch (cmd) { 396 case JSFLASH_IDENT: 397 if (copy_to_user(argp, &jsf0.id, JSFIDSZ)) { 398 + mutex_unlock(&jsf_mutex); 399 return -EFAULT; 400 } 401 break; ··· 407 break; 408 } 409 410 + mutex_unlock(&jsf_mutex); 411 return error; 412 } 413 ··· 418 419 static int jsf_open(struct inode * inode, struct file * filp) 420 { 421 + mutex_lock(&jsf_mutex); 422 if (jsf0.base == 0) { 423 + mutex_unlock(&jsf_mutex); 424 return -ENXIO; 425 } 426 if (test_and_set_bit(0, (void *)&jsf0.busy) != 0) { 427 + mutex_unlock(&jsf_mutex); 428 return -EBUSY; 429 } 430 431 + mutex_unlock(&jsf_mutex); 432 return 0; /* XXX What security? */ 433 } 434
+3 -4
drivers/scsi/3w-9xxx.c
··· 92 #include <linux/pci.h> 93 #include <linux/time.h> 94 #include <linux/mutex.h> 95 - #include <linux/smp_lock.h> 96 #include <linux/slab.h> 97 #include <asm/io.h> 98 #include <asm/irq.h> ··· 104 105 /* Globals */ 106 #define TW_DRIVER_VERSION "2.26.02.014" 107 static TW_Device_Extension *twa_device_extension_list[TW_MAX_SLOT]; 108 static unsigned int twa_device_extension_count; 109 static int twa_major = -1; ··· 658 int retval = TW_IOCTL_ERROR_OS_EFAULT; 659 void __user *argp = (void __user *)arg; 660 661 - lock_kernel(); 662 663 /* Only let one of these through at a time */ 664 if (mutex_lock_interruptible(&tw_dev->ioctl_lock)) { ··· 879 out2: 880 mutex_unlock(&tw_dev->ioctl_lock); 881 out: 882 - unlock_kernel(); 883 return retval; 884 } /* End twa_chrdev_ioctl() */ 885 ··· 890 unsigned int minor_number; 891 int retval = TW_IOCTL_ERROR_OS_ENODEV; 892 893 - cycle_kernel_lock(); 894 minor_number = iminor(inode); 895 if (minor_number >= twa_device_extension_count) 896 goto out;
··· 92 #include <linux/pci.h> 93 #include <linux/time.h> 94 #include <linux/mutex.h> 95 #include <linux/slab.h> 96 #include <asm/io.h> 97 #include <asm/irq.h> ··· 105 106 /* Globals */ 107 #define TW_DRIVER_VERSION "2.26.02.014" 108 + static DEFINE_MUTEX(twa_chrdev_mutex); 109 static TW_Device_Extension *twa_device_extension_list[TW_MAX_SLOT]; 110 static unsigned int twa_device_extension_count; 111 static int twa_major = -1; ··· 658 int retval = TW_IOCTL_ERROR_OS_EFAULT; 659 void __user *argp = (void __user *)arg; 660 661 + mutex_lock(&twa_chrdev_mutex); 662 663 /* Only let one of these through at a time */ 664 if (mutex_lock_interruptible(&tw_dev->ioctl_lock)) { ··· 879 out2: 880 mutex_unlock(&tw_dev->ioctl_lock); 881 out: 882 + mutex_unlock(&twa_chrdev_mutex); 883 return retval; 884 } /* End twa_chrdev_ioctl() */ 885 ··· 890 unsigned int minor_number; 891 int retval = TW_IOCTL_ERROR_OS_ENODEV; 892 893 minor_number = iminor(inode); 894 if (minor_number >= twa_device_extension_count) 895 goto out;
+3 -4
drivers/scsi/3w-sas.c
··· 64 #include <linux/pci.h> 65 #include <linux/time.h> 66 #include <linux/mutex.h> 67 - #include <linux/smp_lock.h> 68 #include <linux/slab.h> 69 #include <asm/io.h> 70 #include <asm/irq.h> ··· 76 77 /* Globals */ 78 #define TW_DRIVER_VERSION "3.26.02.000" 79 static TW_Device_Extension *twl_device_extension_list[TW_MAX_SLOT]; 80 static unsigned int twl_device_extension_count; 81 static int twl_major = -1; ··· 764 int retval = -EFAULT; 765 void __user *argp = (void __user *)arg; 766 767 - lock_kernel(); 768 769 /* Only let one of these through at a time */ 770 if (mutex_lock_interruptible(&tw_dev->ioctl_lock)) { ··· 861 out2: 862 mutex_unlock(&tw_dev->ioctl_lock); 863 out: 864 - unlock_kernel(); 865 return retval; 866 } /* End twl_chrdev_ioctl() */ 867 ··· 876 goto out; 877 } 878 879 - cycle_kernel_lock(); 880 minor_number = iminor(inode); 881 if (minor_number >= twl_device_extension_count) 882 goto out;
··· 64 #include <linux/pci.h> 65 #include <linux/time.h> 66 #include <linux/mutex.h> 67 #include <linux/slab.h> 68 #include <asm/io.h> 69 #include <asm/irq.h> ··· 77 78 /* Globals */ 79 #define TW_DRIVER_VERSION "3.26.02.000" 80 + static DEFINE_MUTEX(twl_chrdev_mutex); 81 static TW_Device_Extension *twl_device_extension_list[TW_MAX_SLOT]; 82 static unsigned int twl_device_extension_count; 83 static int twl_major = -1; ··· 764 int retval = -EFAULT; 765 void __user *argp = (void __user *)arg; 766 767 + mutex_lock(&twl_chrdev_mutex); 768 769 /* Only let one of these through at a time */ 770 if (mutex_lock_interruptible(&tw_dev->ioctl_lock)) { ··· 861 out2: 862 mutex_unlock(&tw_dev->ioctl_lock); 863 out: 864 + mutex_unlock(&twl_chrdev_mutex); 865 return retval; 866 } /* End twl_chrdev_ioctl() */ 867 ··· 876 goto out; 877 } 878 879 minor_number = iminor(inode); 880 if (minor_number >= twl_device_extension_count) 881 goto out;
+4 -5
drivers/scsi/3w-xxxx.c
··· 199 200 #include <linux/module.h> 201 #include <linux/reboot.h> 202 - #include <linux/smp_lock.h> 203 #include <linux/spinlock.h> 204 #include <linux/interrupt.h> 205 #include <linux/moduleparam.h> ··· 220 221 /* Globals */ 222 #define TW_DRIVER_VERSION "1.26.02.003" 223 static TW_Device_Extension *tw_device_extension_list[TW_MAX_SLOT]; 224 static int tw_device_extension_count = 0; 225 static int twe_major = -1; ··· 900 901 dprintk(KERN_WARNING "3w-xxxx: tw_chrdev_ioctl()\n"); 902 903 - lock_kernel(); 904 /* Only let one of these through at a time */ 905 if (mutex_lock_interruptible(&tw_dev->ioctl_lock)) { 906 - unlock_kernel(); 907 return -EINTR; 908 } 909 ··· 1034 dma_free_coherent(&tw_dev->tw_pci_dev->dev, data_buffer_length_adjusted+sizeof(TW_New_Ioctl) - 1, cpu_addr, dma_handle); 1035 out: 1036 mutex_unlock(&tw_dev->ioctl_lock); 1037 - unlock_kernel(); 1038 return retval; 1039 } /* End tw_chrdev_ioctl() */ 1040 ··· 1044 { 1045 unsigned int minor_number; 1046 1047 - cycle_kernel_lock(); 1048 dprintk(KERN_WARNING "3w-xxxx: tw_ioctl_open()\n"); 1049 1050 minor_number = iminor(inode);
··· 199 200 #include <linux/module.h> 201 #include <linux/reboot.h> 202 #include <linux/spinlock.h> 203 #include <linux/interrupt.h> 204 #include <linux/moduleparam.h> ··· 221 222 /* Globals */ 223 #define TW_DRIVER_VERSION "1.26.02.003" 224 + static DEFINE_MUTEX(tw_mutex); 225 static TW_Device_Extension *tw_device_extension_list[TW_MAX_SLOT]; 226 static int tw_device_extension_count = 0; 227 static int twe_major = -1; ··· 900 901 dprintk(KERN_WARNING "3w-xxxx: tw_chrdev_ioctl()\n"); 902 903 + mutex_lock(&tw_mutex); 904 /* Only let one of these through at a time */ 905 if (mutex_lock_interruptible(&tw_dev->ioctl_lock)) { 906 + mutex_unlock(&tw_mutex); 907 return -EINTR; 908 } 909 ··· 1034 dma_free_coherent(&tw_dev->tw_pci_dev->dev, data_buffer_length_adjusted+sizeof(TW_New_Ioctl) - 1, cpu_addr, dma_handle); 1035 out: 1036 mutex_unlock(&tw_dev->ioctl_lock); 1037 + mutex_unlock(&tw_mutex); 1038 return retval; 1039 } /* End tw_chrdev_ioctl() */ 1040 ··· 1044 { 1045 unsigned int minor_number; 1046 1047 dprintk(KERN_WARNING "3w-xxxx: tw_ioctl_open()\n"); 1048 1049 minor_number = iminor(inode);
+8 -7
drivers/scsi/aacraid/linit.c
··· 38 #include <linux/moduleparam.h> 39 #include <linux/pci.h> 40 #include <linux/slab.h> 41 - #include <linux/smp_lock.h> 42 #include <linux/spinlock.h> 43 #include <linux/syscalls.h> 44 #include <linux/delay.h> ··· 76 MODULE_LICENSE("GPL"); 77 MODULE_VERSION(AAC_DRIVER_FULL_VERSION); 78 79 static LIST_HEAD(aac_devices); 80 static int aac_cfg_major = -1; 81 char aac_driver_version[] = AAC_DRIVER_FULL_VERSION; ··· 679 unsigned minor_number = iminor(inode); 680 int err = -ENODEV; 681 682 - lock_kernel(); /* BKL pushdown: nothing else protects this list */ 683 list_for_each_entry(aac, &aac_devices, entry) { 684 if (aac->id == minor_number) { 685 file->private_data = aac; ··· 687 break; 688 } 689 } 690 - unlock_kernel(); 691 692 return err; 693 } ··· 712 int ret; 713 if (!capable(CAP_SYS_RAWIO)) 714 return -EPERM; 715 - lock_kernel(); 716 ret = aac_do_ioctl(file->private_data, cmd, (void __user *)arg); 717 - unlock_kernel(); 718 719 return ret; 720 } ··· 723 static long aac_compat_do_ioctl(struct aac_dev *dev, unsigned cmd, unsigned long arg) 724 { 725 long ret; 726 - lock_kernel(); 727 switch (cmd) { 728 case FSACTL_MINIPORT_REV_CHECK: 729 case FSACTL_SENDFIB: ··· 757 ret = -ENOIOCTLCMD; 758 break; 759 } 760 - unlock_kernel(); 761 return ret; 762 } 763
··· 38 #include <linux/moduleparam.h> 39 #include <linux/pci.h> 40 #include <linux/slab.h> 41 + #include <linux/mutex.h> 42 #include <linux/spinlock.h> 43 #include <linux/syscalls.h> 44 #include <linux/delay.h> ··· 76 MODULE_LICENSE("GPL"); 77 MODULE_VERSION(AAC_DRIVER_FULL_VERSION); 78 79 + static DEFINE_MUTEX(aac_mutex); 80 static LIST_HEAD(aac_devices); 81 static int aac_cfg_major = -1; 82 char aac_driver_version[] = AAC_DRIVER_FULL_VERSION; ··· 678 unsigned minor_number = iminor(inode); 679 int err = -ENODEV; 680 681 + mutex_lock(&aac_mutex); /* BKL pushdown: nothing else protects this list */ 682 list_for_each_entry(aac, &aac_devices, entry) { 683 if (aac->id == minor_number) { 684 file->private_data = aac; ··· 686 break; 687 } 688 } 689 + mutex_unlock(&aac_mutex); 690 691 return err; 692 } ··· 711 int ret; 712 if (!capable(CAP_SYS_RAWIO)) 713 return -EPERM; 714 + mutex_lock(&aac_mutex); 715 ret = aac_do_ioctl(file->private_data, cmd, (void __user *)arg); 716 + mutex_unlock(&aac_mutex); 717 718 return ret; 719 } ··· 722 static long aac_compat_do_ioctl(struct aac_dev *dev, unsigned cmd, unsigned long arg) 723 { 724 long ret; 725 + mutex_lock(&aac_mutex); 726 switch (cmd) { 727 case FSACTL_MINIPORT_REV_CHECK: 728 case FSACTL_SENDFIB: ··· 756 ret = -ENOIOCTLCMD; 757 break; 758 } 759 + mutex_unlock(&aac_mutex); 760 return ret; 761 } 762
+4 -4
drivers/scsi/ch.c
··· 22 #include <linux/chio.h> /* here are all the ioctls */ 23 #include <linux/mutex.h> 24 #include <linux/idr.h> 25 - #include <linux/smp_lock.h> 26 #include <linux/slab.h> 27 28 #include <scsi/scsi.h> ··· 43 MODULE_ALIAS_CHARDEV_MAJOR(SCSI_CHANGER_MAJOR); 44 MODULE_ALIAS_SCSI_DEVICE(TYPE_MEDIUM_CHANGER); 45 46 static int init = 1; 47 module_param(init, int, 0444); 48 MODULE_PARM_DESC(init, \ ··· 581 scsi_changer *ch; 582 int minor = iminor(inode); 583 584 - lock_kernel(); 585 spin_lock(&ch_index_lock); 586 ch = idr_find(&ch_index_idr, minor); 587 588 if (NULL == ch || scsi_device_get(ch->device)) { 589 spin_unlock(&ch_index_lock); 590 - unlock_kernel(); 591 return -ENXIO; 592 } 593 spin_unlock(&ch_index_lock); 594 595 file->private_data = ch; 596 - unlock_kernel(); 597 return 0; 598 } 599
··· 22 #include <linux/chio.h> /* here are all the ioctls */ 23 #include <linux/mutex.h> 24 #include <linux/idr.h> 25 #include <linux/slab.h> 26 27 #include <scsi/scsi.h> ··· 44 MODULE_ALIAS_CHARDEV_MAJOR(SCSI_CHANGER_MAJOR); 45 MODULE_ALIAS_SCSI_DEVICE(TYPE_MEDIUM_CHANGER); 46 47 + static DEFINE_MUTEX(ch_mutex); 48 static int init = 1; 49 module_param(init, int, 0444); 50 MODULE_PARM_DESC(init, \ ··· 581 scsi_changer *ch; 582 int minor = iminor(inode); 583 584 + mutex_lock(&ch_mutex); 585 spin_lock(&ch_index_lock); 586 ch = idr_find(&ch_index_idr, minor); 587 588 if (NULL == ch || scsi_device_get(ch->device)) { 589 spin_unlock(&ch_index_lock); 590 + mutex_unlock(&ch_mutex); 591 return -ENXIO; 592 } 593 spin_unlock(&ch_index_lock); 594 595 file->private_data = ch; 596 + mutex_unlock(&ch_mutex); 597 return 0; 598 } 599
+9 -9
drivers/scsi/dpt_i2o.c
··· 49 #include <linux/kernel.h> /* for printk */ 50 #include <linux/sched.h> 51 #include <linux/reboot.h> 52 - #include <linux/smp_lock.h> 53 #include <linux/spinlock.h> 54 #include <linux/dma-mapping.h> 55 ··· 75 * Needed for our management apps 76 *============================================================================ 77 */ 78 static dpt_sig_S DPTI_sig = { 79 {'d', 'P', 't', 'S', 'i', 'G'}, SIG_VERSION, 80 #ifdef __i386__ ··· 1732 int minor; 1733 adpt_hba* pHba; 1734 1735 - lock_kernel(); 1736 //TODO check for root access 1737 // 1738 minor = iminor(inode); 1739 if (minor >= hba_count) { 1740 - unlock_kernel(); 1741 return -ENXIO; 1742 } 1743 mutex_lock(&adpt_configuration_lock); ··· 1748 } 1749 if (pHba == NULL) { 1750 mutex_unlock(&adpt_configuration_lock); 1751 - unlock_kernel(); 1752 return -ENXIO; 1753 } 1754 ··· 1759 1760 pHba->in_use = 1; 1761 mutex_unlock(&adpt_configuration_lock); 1762 - unlock_kernel(); 1763 1764 return 0; 1765 } ··· 2160 2161 inode = file->f_dentry->d_inode; 2162 2163 - lock_kernel(); 2164 ret = adpt_ioctl(inode, file, cmd, arg); 2165 - unlock_kernel(); 2166 2167 return ret; 2168 } ··· 2176 2177 inode = file->f_dentry->d_inode; 2178 2179 - lock_kernel(); 2180 2181 switch(cmd) { 2182 case DPT_SIGNATURE: ··· 2194 ret = -ENOIOCTLCMD; 2195 } 2196 2197 - unlock_kernel(); 2198 2199 return ret; 2200 }
··· 49 #include <linux/kernel.h> /* for printk */ 50 #include <linux/sched.h> 51 #include <linux/reboot.h> 52 #include <linux/spinlock.h> 53 #include <linux/dma-mapping.h> 54 ··· 76 * Needed for our management apps 77 *============================================================================ 78 */ 79 + static DEFINE_MUTEX(adpt_mutex); 80 static dpt_sig_S DPTI_sig = { 81 {'d', 'P', 't', 'S', 'i', 'G'}, SIG_VERSION, 82 #ifdef __i386__ ··· 1732 int minor; 1733 adpt_hba* pHba; 1734 1735 + mutex_lock(&adpt_mutex); 1736 //TODO check for root access 1737 // 1738 minor = iminor(inode); 1739 if (minor >= hba_count) { 1740 + mutex_unlock(&adpt_mutex); 1741 return -ENXIO; 1742 } 1743 mutex_lock(&adpt_configuration_lock); ··· 1748 } 1749 if (pHba == NULL) { 1750 mutex_unlock(&adpt_configuration_lock); 1751 + mutex_unlock(&adpt_mutex); 1752 return -ENXIO; 1753 } 1754 ··· 1759 1760 pHba->in_use = 1; 1761 mutex_unlock(&adpt_configuration_lock); 1762 + mutex_unlock(&adpt_mutex); 1763 1764 return 0; 1765 } ··· 2160 2161 inode = file->f_dentry->d_inode; 2162 2163 + mutex_lock(&adpt_mutex); 2164 ret = adpt_ioctl(inode, file, cmd, arg); 2165 + mutex_unlock(&adpt_mutex); 2166 2167 return ret; 2168 } ··· 2176 2177 inode = file->f_dentry->d_inode; 2178 2179 + mutex_lock(&adpt_mutex); 2180 2181 switch(cmd) { 2182 case DPT_SIGNATURE: ··· 2194 ret = -ENOIOCTLCMD; 2195 } 2196 2197 + mutex_unlock(&adpt_mutex); 2198 2199 return ret; 2200 }
+6 -5
drivers/scsi/gdth.c
··· 120 #include <linux/timer.h> 121 #include <linux/dma-mapping.h> 122 #include <linux/list.h> 123 - #include <linux/smp_lock.h> 124 #include <linux/slab.h> 125 126 #ifdef GDTH_RTC ··· 140 #include <scsi/scsi_host.h> 141 #include "gdth.h" 142 143 static void gdth_delay(int milliseconds); 144 static void gdth_eval_mapping(u32 size, u32 *cyls, int *heads, int *secs); 145 static irqreturn_t gdth_interrupt(int irq, void *dev_id); ··· 4043 { 4044 gdth_ha_str *ha; 4045 4046 - lock_kernel(); 4047 list_for_each_entry(ha, &gdth_instances, list) { 4048 if (!ha->sdev) 4049 ha->sdev = scsi_get_host_dev(ha->shost); 4050 } 4051 - unlock_kernel(); 4052 4053 TRACE(("gdth_open()\n")); 4054 return 0; ··· 4616 { 4617 int ret; 4618 4619 - lock_kernel(); 4620 ret = gdth_ioctl(file, cmd, arg); 4621 - unlock_kernel(); 4622 4623 return ret; 4624 }
··· 120 #include <linux/timer.h> 121 #include <linux/dma-mapping.h> 122 #include <linux/list.h> 123 + #include <linux/mutex.h> 124 #include <linux/slab.h> 125 126 #ifdef GDTH_RTC ··· 140 #include <scsi/scsi_host.h> 141 #include "gdth.h" 142 143 + static DEFINE_MUTEX(gdth_mutex); 144 static void gdth_delay(int milliseconds); 145 static void gdth_eval_mapping(u32 size, u32 *cyls, int *heads, int *secs); 146 static irqreturn_t gdth_interrupt(int irq, void *dev_id); ··· 4042 { 4043 gdth_ha_str *ha; 4044 4045 + mutex_lock(&gdth_mutex); 4046 list_for_each_entry(ha, &gdth_instances, list) { 4047 if (!ha->sdev) 4048 ha->sdev = scsi_get_host_dev(ha->shost); 4049 } 4050 + mutex_unlock(&gdth_mutex); 4051 4052 TRACE(("gdth_open()\n")); 4053 return 0; ··· 4615 { 4616 int ret; 4617 4618 + mutex_lock(&gdth_mutex); 4619 ret = gdth_ioctl(file, cmd, arg); 4620 + mutex_unlock(&gdth_mutex); 4621 4622 return ret; 4623 }
+4 -4
drivers/scsi/megaraid.c
··· 46 #include <linux/pci.h> 47 #include <linux/init.h> 48 #include <linux/dma-mapping.h> 49 - #include <linux/smp_lock.h> 50 #include <linux/slab.h> 51 #include <scsi/scsicam.h> 52 ··· 62 MODULE_LICENSE ("GPL"); 63 MODULE_VERSION(MEGARAID_MODULE_VERSION); 64 65 static unsigned int max_cmd_per_lun = DEF_CMD_PER_LUN; 66 module_param(max_cmd_per_lun, uint, 0); 67 MODULE_PARM_DESC(max_cmd_per_lun, "Maximum number of commands which can be issued to a single LUN (default=DEF_CMD_PER_LUN=63)"); ··· 3283 static int 3284 megadev_open (struct inode *inode, struct file *filep) 3285 { 3286 - cycle_kernel_lock(); 3287 /* 3288 * Only allow superuser to access private ioctl interface 3289 */ ··· 3701 { 3702 int ret; 3703 3704 - lock_kernel(); 3705 ret = megadev_ioctl(filep, cmd, arg); 3706 - unlock_kernel(); 3707 3708 return ret; 3709 }
··· 46 #include <linux/pci.h> 47 #include <linux/init.h> 48 #include <linux/dma-mapping.h> 49 + #include <linux/mutex.h> 50 #include <linux/slab.h> 51 #include <scsi/scsicam.h> 52 ··· 62 MODULE_LICENSE ("GPL"); 63 MODULE_VERSION(MEGARAID_MODULE_VERSION); 64 65 + static DEFINE_MUTEX(megadev_mutex); 66 static unsigned int max_cmd_per_lun = DEF_CMD_PER_LUN; 67 module_param(max_cmd_per_lun, uint, 0); 68 MODULE_PARM_DESC(max_cmd_per_lun, "Maximum number of commands which can be issued to a single LUN (default=DEF_CMD_PER_LUN=63)"); ··· 3282 static int 3283 megadev_open (struct inode *inode, struct file *filep) 3284 { 3285 /* 3286 * Only allow superuser to access private ioctl interface 3287 */ ··· 3701 { 3702 int ret; 3703 3704 + mutex_lock(&megadev_mutex); 3705 ret = megadev_ioctl(filep, cmd, arg); 3706 + mutex_unlock(&megadev_mutex); 3707 3708 return ret; 3709 }
+4 -4
drivers/scsi/megaraid/megaraid_mm.c
··· 16 */ 17 #include <linux/sched.h> 18 #include <linux/slab.h> 19 - #include <linux/smp_lock.h> 20 #include "megaraid_mm.h" 21 22 23 // Entry points for char node driver 24 static int mraid_mm_open(struct inode *, struct file *); 25 static long mraid_mm_unlocked_ioctl(struct file *, uint, unsigned long); 26 ··· 99 */ 100 if (!capable(CAP_SYS_ADMIN)) return (-EACCES); 101 102 - cycle_kernel_lock(); 103 return 0; 104 } 105 ··· 224 int err; 225 226 /* inconsistant: mraid_mm_compat_ioctl doesn't take the BKL */ 227 - lock_kernel(); 228 err = mraid_mm_ioctl(filep, cmd, arg); 229 - unlock_kernel(); 230 231 return err; 232 }
··· 16 */ 17 #include <linux/sched.h> 18 #include <linux/slab.h> 19 + #include <linux/mutex.h> 20 #include "megaraid_mm.h" 21 22 23 // Entry points for char node driver 24 + static DEFINE_MUTEX(mraid_mm_mutex); 25 static int mraid_mm_open(struct inode *, struct file *); 26 static long mraid_mm_unlocked_ioctl(struct file *, uint, unsigned long); 27 ··· 98 */ 99 if (!capable(CAP_SYS_ADMIN)) return (-EACCES); 100 101 return 0; 102 } 103 ··· 224 int err; 225 226 /* inconsistant: mraid_mm_compat_ioctl doesn't take the BKL */ 227 + mutex_lock(&mraid_mm_mutex); 228 err = mraid_mm_ioctl(filep, cmd, arg); 229 + mutex_unlock(&mraid_mm_mutex); 230 231 return err; 232 }
-2
drivers/scsi/megaraid/megaraid_sas.c
··· 33 #include <linux/spinlock.h> 34 #include <linux/interrupt.h> 35 #include <linux/delay.h> 36 - #include <linux/smp_lock.h> 37 #include <linux/uio.h> 38 #include <linux/slab.h> 39 #include <asm/uaccess.h> ··· 3556 */ 3557 static int megasas_mgmt_open(struct inode *inode, struct file *filep) 3558 { 3559 - cycle_kernel_lock(); 3560 /* 3561 * Allow only those users with admin rights 3562 */
··· 33 #include <linux/spinlock.h> 34 #include <linux/interrupt.h> 35 #include <linux/delay.h> 36 #include <linux/uio.h> 37 #include <linux/slab.h> 38 #include <asm/uaccess.h> ··· 3557 */ 3558 static int megasas_mgmt_open(struct inode *inode, struct file *filep) 3559 { 3560 /* 3561 * Allow only those users with admin rights 3562 */
+6 -5
drivers/scsi/mpt2sas/mpt2sas_ctl.c
··· 51 #include <linux/types.h> 52 #include <linux/pci.h> 53 #include <linux/delay.h> 54 - #include <linux/smp_lock.h> 55 #include <linux/compat.h> 56 #include <linux/poll.h> 57 ··· 61 #include "mpt2sas_base.h" 62 #include "mpt2sas_ctl.h" 63 64 static struct fasync_struct *async_queue; 65 static DECLARE_WAIT_QUEUE_HEAD(ctl_poll_wait); 66 ··· 2239 { 2240 long ret; 2241 2242 - lock_kernel(); 2243 ret = _ctl_ioctl_main(file, cmd, (void __user *)arg); 2244 - unlock_kernel(); 2245 return ret; 2246 } 2247 ··· 2310 { 2311 long ret; 2312 2313 - lock_kernel(); 2314 if (cmd == MPT2COMMAND32) 2315 ret = _ctl_compat_mpt_command(file, cmd, arg); 2316 else 2317 ret = _ctl_ioctl_main(file, cmd, (void __user *)arg); 2318 - unlock_kernel(); 2319 return ret; 2320 } 2321 #endif
··· 51 #include <linux/types.h> 52 #include <linux/pci.h> 53 #include <linux/delay.h> 54 + #include <linux/mutex.h> 55 #include <linux/compat.h> 56 #include <linux/poll.h> 57 ··· 61 #include "mpt2sas_base.h" 62 #include "mpt2sas_ctl.h" 63 64 + static DEFINE_MUTEX(_ctl_mutex); 65 static struct fasync_struct *async_queue; 66 static DECLARE_WAIT_QUEUE_HEAD(ctl_poll_wait); 67 ··· 2238 { 2239 long ret; 2240 2241 + mutex_lock(&_ctl_mutex); 2242 ret = _ctl_ioctl_main(file, cmd, (void __user *)arg); 2243 + mutex_unlock(&_ctl_mutex); 2244 return ret; 2245 } 2246 ··· 2309 { 2310 long ret; 2311 2312 + mutex_lock(&_ctl_mutex); 2313 if (cmd == MPT2COMMAND32) 2314 ret = _ctl_compat_mpt_command(file, cmd, arg); 2315 else 2316 ret = _ctl_ioctl_main(file, cmd, (void __user *)arg); 2317 + mutex_unlock(&_ctl_mutex); 2318 return ret; 2319 } 2320 #endif
+8 -7
drivers/scsi/osst.c
··· 51 #include <linux/moduleparam.h> 52 #include <linux/delay.h> 53 #include <linux/jiffies.h> 54 - #include <linux/smp_lock.h> 55 #include <asm/uaccess.h> 56 #include <asm/dma.h> 57 #include <asm/system.h> ··· 80 #include "osst_options.h" 81 #include "osst_detect.h" 82 83 static int max_dev = 0; 84 static int write_threshold_kbs = 0; 85 static int max_sg_segs = 0; ··· 4808 { 4809 int ret; 4810 4811 - lock_kernel(); 4812 ret = __os_scsi_tape_open(inode, filp); 4813 - unlock_kernel(); 4814 return ret; 4815 } 4816 ··· 4944 char * name = tape_name(STp); 4945 void __user * p = (void __user *)arg; 4946 4947 - lock_kernel(); 4948 if (mutex_lock_interruptible(&STp->lock)) { 4949 - unlock_kernel(); 4950 return -ERESTARTSYS; 4951 } 4952 ··· 5261 mutex_unlock(&STp->lock); 5262 5263 retval = scsi_ioctl(STp->device, cmd_in, p); 5264 - unlock_kernel(); 5265 return retval; 5266 5267 out: 5268 if (SRpnt) osst_release_request(SRpnt); 5269 5270 mutex_unlock(&STp->lock); 5271 - unlock_kernel(); 5272 5273 return retval; 5274 }
··· 51 #include <linux/moduleparam.h> 52 #include <linux/delay.h> 53 #include <linux/jiffies.h> 54 + #include <linux/mutex.h> 55 #include <asm/uaccess.h> 56 #include <asm/dma.h> 57 #include <asm/system.h> ··· 80 #include "osst_options.h" 81 #include "osst_detect.h" 82 83 + static DEFINE_MUTEX(osst_int_mutex); 84 static int max_dev = 0; 85 static int write_threshold_kbs = 0; 86 static int max_sg_segs = 0; ··· 4807 { 4808 int ret; 4809 4810 + mutex_lock(&osst_int_mutex); 4811 ret = __os_scsi_tape_open(inode, filp); 4812 + mutex_unlock(&osst_int_mutex); 4813 return ret; 4814 } 4815 ··· 4943 char * name = tape_name(STp); 4944 void __user * p = (void __user *)arg; 4945 4946 + mutex_lock(&osst_int_mutex); 4947 if (mutex_lock_interruptible(&STp->lock)) { 4948 + mutex_unlock(&osst_int_mutex); 4949 return -ERESTARTSYS; 4950 } 4951 ··· 5260 mutex_unlock(&STp->lock); 5261 5262 retval = scsi_ioctl(STp->device, cmd_in, p); 5263 + mutex_unlock(&osst_int_mutex); 5264 return retval; 5265 5266 out: 5267 if (SRpnt) osst_release_request(SRpnt); 5268 5269 mutex_unlock(&STp->lock); 5270 + mutex_unlock(&osst_int_mutex); 5271 5272 return retval; 5273 }
-2
drivers/scsi/scsi_tgt_if.c
··· 22 #include <linux/miscdevice.h> 23 #include <linux/gfp.h> 24 #include <linux/file.h> 25 - #include <linux/smp_lock.h> 26 #include <net/tcp.h> 27 #include <scsi/scsi.h> 28 #include <scsi/scsi_cmnd.h> ··· 322 { 323 tx_ring.tr_idx = rx_ring.tr_idx = 0; 324 325 - cycle_kernel_lock(); 326 return 0; 327 } 328
··· 22 #include <linux/miscdevice.h> 23 #include <linux/gfp.h> 24 #include <linux/file.h> 25 #include <net/tcp.h> 26 #include <scsi/scsi.h> 27 #include <scsi/scsi_cmnd.h> ··· 323 { 324 tx_ring.tr_idx = rx_ring.tr_idx = 0; 325 326 return 0; 327 } 328
+7 -5
drivers/scsi/sg.c
··· 49 #include <linux/blkdev.h> 50 #include <linux/delay.h> 51 #include <linux/blktrace_api.h> 52 - #include <linux/smp_lock.h> 53 54 #include "scsi.h" 55 #include <scsi/scsi_dbg.h> ··· 102 103 static int sg_add(struct device *, struct class_interface *); 104 static void sg_remove(struct device *, struct class_interface *); 105 106 static DEFINE_IDR(sg_index_idr); 107 static DEFINE_RWLOCK(sg_index_lock); /* Also used to lock ··· 231 int res; 232 int retval; 233 234 - lock_kernel(); 235 nonseekable_open(inode, filp); 236 SCSI_LOG_TIMEOUT(3, printk("sg_open: dev=%d, flags=0x%x\n", dev, flags)); 237 sdp = sg_get_dev(dev); ··· 316 sg_put: 317 if (sdp) 318 sg_put_dev(sdp); 319 - unlock_kernel(); 320 return retval; 321 } 322 ··· 1094 { 1095 int ret; 1096 1097 - lock_kernel(); 1098 ret = sg_ioctl(filp, cmd_in, arg); 1099 - unlock_kernel(); 1100 1101 return ret; 1102 }
··· 49 #include <linux/blkdev.h> 50 #include <linux/delay.h> 51 #include <linux/blktrace_api.h> 52 + #include <linux/mutex.h> 53 54 #include "scsi.h" 55 #include <scsi/scsi_dbg.h> ··· 102 103 static int sg_add(struct device *, struct class_interface *); 104 static void sg_remove(struct device *, struct class_interface *); 105 + 106 + static DEFINE_MUTEX(sg_mutex); 107 108 static DEFINE_IDR(sg_index_idr); 109 static DEFINE_RWLOCK(sg_index_lock); /* Also used to lock ··· 229 int res; 230 int retval; 231 232 + mutex_lock(&sg_mutex); 233 nonseekable_open(inode, filp); 234 SCSI_LOG_TIMEOUT(3, printk("sg_open: dev=%d, flags=0x%x\n", dev, flags)); 235 sdp = sg_get_dev(dev); ··· 314 sg_put: 315 if (sdp) 316 sg_put_dev(sdp); 317 + mutex_unlock(&sg_mutex); 318 return retval; 319 } 320 ··· 1092 { 1093 int ret; 1094 1095 + mutex_lock(&sg_mutex); 1096 ret = sg_ioctl(filp, cmd_in, arg); 1097 + mutex_unlock(&sg_mutex); 1098 1099 return ret; 1100 }
+7 -7
drivers/scsi/sr.c
··· 44 #include <linux/init.h> 45 #include <linux/blkdev.h> 46 #include <linux/mutex.h> 47 - #include <linux/smp_lock.h> 48 #include <linux/slab.h> 49 #include <asm/uaccess.h> 50 ··· 75 CDC_CD_R|CDC_CD_RW|CDC_DVD|CDC_DVD_R|CDC_DVD_RAM|CDC_GENERIC_PACKET| \ 76 CDC_MRW|CDC_MRW_W|CDC_RAM) 77 78 static int sr_probe(struct device *); 79 static int sr_remove(struct device *); 80 static int sr_done(struct scsi_cmnd *); ··· 470 struct scsi_cd *cd; 471 int ret = -ENXIO; 472 473 - lock_kernel(); 474 cd = scsi_cd_get(bdev->bd_disk); 475 if (cd) { 476 ret = cdrom_open(&cd->cdi, bdev, mode); 477 if (ret) 478 scsi_cd_put(cd); 479 } 480 - unlock_kernel(); 481 return ret; 482 } 483 484 static int sr_block_release(struct gendisk *disk, fmode_t mode) 485 { 486 struct scsi_cd *cd = scsi_cd(disk); 487 - lock_kernel(); 488 cdrom_release(&cd->cdi, mode); 489 scsi_cd_put(cd); 490 - unlock_kernel(); 491 return 0; 492 } 493 ··· 499 void __user *argp = (void __user *)arg; 500 int ret; 501 502 - lock_kernel(); 503 504 /* 505 * Send SCSI addressing ioctls directly to mid level, send other ··· 529 ret = scsi_ioctl(sdev, cmd, argp); 530 531 out: 532 - unlock_kernel(); 533 return ret; 534 } 535
··· 44 #include <linux/init.h> 45 #include <linux/blkdev.h> 46 #include <linux/mutex.h> 47 #include <linux/slab.h> 48 #include <asm/uaccess.h> 49 ··· 76 CDC_CD_R|CDC_CD_RW|CDC_DVD|CDC_DVD_R|CDC_DVD_RAM|CDC_GENERIC_PACKET| \ 77 CDC_MRW|CDC_MRW_W|CDC_RAM) 78 79 + static DEFINE_MUTEX(sr_mutex); 80 static int sr_probe(struct device *); 81 static int sr_remove(struct device *); 82 static int sr_done(struct scsi_cmnd *); ··· 470 struct scsi_cd *cd; 471 int ret = -ENXIO; 472 473 + mutex_lock(&sr_mutex); 474 cd = scsi_cd_get(bdev->bd_disk); 475 if (cd) { 476 ret = cdrom_open(&cd->cdi, bdev, mode); 477 if (ret) 478 scsi_cd_put(cd); 479 } 480 + mutex_unlock(&sr_mutex); 481 return ret; 482 } 483 484 static int sr_block_release(struct gendisk *disk, fmode_t mode) 485 { 486 struct scsi_cd *cd = scsi_cd(disk); 487 + mutex_lock(&sr_mutex); 488 cdrom_release(&cd->cdi, mode); 489 scsi_cd_put(cd); 490 + mutex_unlock(&sr_mutex); 491 return 0; 492 } 493 ··· 499 void __user *argp = (void __user *)arg; 500 int ret; 501 502 + mutex_lock(&sr_mutex); 503 504 /* 505 * Send SCSI addressing ioctls directly to mid level, send other ··· 529 ret = scsi_ioctl(sdev, cmd, argp); 530 531 out: 532 + mutex_unlock(&sr_mutex); 533 return ret; 534 } 535
+6 -6
drivers/scsi/st.c
··· 39 #include <linux/cdev.h> 40 #include <linux/delay.h> 41 #include <linux/mutex.h> 42 - #include <linux/smp_lock.h> 43 44 #include <asm/uaccess.h> 45 #include <asm/dma.h> ··· 75 #include "st_options.h" 76 #include "st.h" 77 78 static int buffer_kbs; 79 static int max_sg_segs; 80 static int try_direct_io = TRY_DIRECT_IO; ··· 1180 int dev = TAPE_NR(inode); 1181 char *name; 1182 1183 - lock_kernel(); 1184 /* 1185 * We really want to do nonseekable_open(inode, filp); here, but some 1186 * versions of tar incorrectly call lseek on tapes and bail out if that ··· 1189 filp->f_mode &= ~(FMODE_PREAD | FMODE_PWRITE); 1190 1191 if (!(STp = scsi_tape_get(dev))) { 1192 - unlock_kernel(); 1193 return -ENXIO; 1194 } 1195 ··· 1200 if (STp->in_use) { 1201 write_unlock(&st_dev_arr_lock); 1202 scsi_tape_put(STp); 1203 - unlock_kernel(); 1204 DEB( printk(ST_DEB_MSG "%s: Device already in use.\n", name); ) 1205 return (-EBUSY); 1206 } ··· 1249 retval = (-EIO); 1250 goto err_out; 1251 } 1252 - unlock_kernel(); 1253 return 0; 1254 1255 err_out: 1256 normalize_buffer(STp->buffer); 1257 STp->in_use = 0; 1258 scsi_tape_put(STp); 1259 - unlock_kernel(); 1260 return retval; 1261 1262 }
··· 39 #include <linux/cdev.h> 40 #include <linux/delay.h> 41 #include <linux/mutex.h> 42 43 #include <asm/uaccess.h> 44 #include <asm/dma.h> ··· 76 #include "st_options.h" 77 #include "st.h" 78 79 + static DEFINE_MUTEX(st_mutex); 80 static int buffer_kbs; 81 static int max_sg_segs; 82 static int try_direct_io = TRY_DIRECT_IO; ··· 1180 int dev = TAPE_NR(inode); 1181 char *name; 1182 1183 + mutex_lock(&st_mutex); 1184 /* 1185 * We really want to do nonseekable_open(inode, filp); here, but some 1186 * versions of tar incorrectly call lseek on tapes and bail out if that ··· 1189 filp->f_mode &= ~(FMODE_PREAD | FMODE_PWRITE); 1190 1191 if (!(STp = scsi_tape_get(dev))) { 1192 + mutex_unlock(&st_mutex); 1193 return -ENXIO; 1194 } 1195 ··· 1200 if (STp->in_use) { 1201 write_unlock(&st_dev_arr_lock); 1202 scsi_tape_put(STp); 1203 + mutex_unlock(&st_mutex); 1204 DEB( printk(ST_DEB_MSG "%s: Device already in use.\n", name); ) 1205 return (-EBUSY); 1206 } ··· 1249 retval = (-EIO); 1250 goto err_out; 1251 } 1252 + mutex_unlock(&st_mutex); 1253 return 0; 1254 1255 err_out: 1256 normalize_buffer(STp->buffer); 1257 STp->in_use = 0; 1258 scsi_tape_put(STp); 1259 + mutex_unlock(&st_mutex); 1260 return retval; 1261 1262 }
+6 -5
drivers/staging/hv/blkvsc_drv.c
··· 25 #include <linux/major.h> 26 #include <linux/delay.h> 27 #include <linux/hdreg.h> 28 - #include <linux/smp_lock.h> 29 #include <linux/slab.h> 30 #include <scsi/scsi.h> 31 #include <scsi/scsi_cmnd.h> ··· 124 }; 125 126 /* Static decl */ 127 static int blkvsc_probe(struct device *dev); 128 static int blkvsc_remove(struct device *device); 129 static void blkvsc_shutdown(struct device *device); ··· 1310 DPRINT_DBG(BLKVSC_DRV, "- users %d disk %s\n", blkdev->users, 1311 blkdev->gd->disk_name); 1312 1313 - lock_kernel(); 1314 spin_lock(&blkdev->lock); 1315 1316 if (!blkdev->users && blkdev->device_type == DVD_TYPE) { ··· 1322 blkdev->users++; 1323 1324 spin_unlock(&blkdev->lock); 1325 - unlock_kernel(); 1326 return 0; 1327 } 1328 ··· 1333 DPRINT_DBG(BLKVSC_DRV, "- users %d disk %s\n", blkdev->users, 1334 blkdev->gd->disk_name); 1335 1336 - lock_kernel(); 1337 spin_lock(&blkdev->lock); 1338 if (blkdev->users == 1) { 1339 spin_unlock(&blkdev->lock); ··· 1344 blkdev->users--; 1345 1346 spin_unlock(&blkdev->lock); 1347 - unlock_kernel(); 1348 return 0; 1349 } 1350
··· 25 #include <linux/major.h> 26 #include <linux/delay.h> 27 #include <linux/hdreg.h> 28 + #include <linux/mutex.h> 29 #include <linux/slab.h> 30 #include <scsi/scsi.h> 31 #include <scsi/scsi_cmnd.h> ··· 124 }; 125 126 /* Static decl */ 127 + static DEFINE_MUTEX(blkvsc_mutex); 128 static int blkvsc_probe(struct device *dev); 129 static int blkvsc_remove(struct device *device); 130 static void blkvsc_shutdown(struct device *device); ··· 1309 DPRINT_DBG(BLKVSC_DRV, "- users %d disk %s\n", blkdev->users, 1310 blkdev->gd->disk_name); 1311 1312 + mutex_lock(&blkvsc_mutex); 1313 spin_lock(&blkdev->lock); 1314 1315 if (!blkdev->users && blkdev->device_type == DVD_TYPE) { ··· 1321 blkdev->users++; 1322 1323 spin_unlock(&blkdev->lock); 1324 + mutex_unlock(&blkvsc_mutex); 1325 return 0; 1326 } 1327 ··· 1332 DPRINT_DBG(BLKVSC_DRV, "- users %d disk %s\n", blkdev->users, 1333 blkdev->gd->disk_name); 1334 1335 + mutex_lock(&blkvsc_mutex); 1336 spin_lock(&blkdev->lock); 1337 if (blkdev->users == 1) { 1338 spin_unlock(&blkdev->lock); ··· 1343 blkdev->users--; 1344 1345 spin_unlock(&blkdev->lock); 1346 + mutex_unlock(&blkvsc_mutex); 1347 return 0; 1348 } 1349
+4 -3
drivers/staging/spectra/ffsport.c
··· 27 #include <linux/kthread.h> 28 #include <linux/log2.h> 29 #include <linux/init.h> 30 - #include <linux/smp_lock.h> 31 #include <linux/slab.h> 32 33 /**** Helper functions used for Div, Remainder operation on u64 ****/ ··· 589 return -ENOTTY; 590 } 591 592 int GLOB_SBD_unlocked_ioctl(struct block_device *bdev, fmode_t mode, 593 unsigned int cmd, unsigned long arg) 594 { 595 int ret; 596 597 - lock_kernel(); 598 ret = GLOB_SBD_ioctl(bdev, mode, cmd, arg); 599 - unlock_kernel(); 600 601 return ret; 602 }
··· 27 #include <linux/kthread.h> 28 #include <linux/log2.h> 29 #include <linux/init.h> 30 #include <linux/slab.h> 31 32 /**** Helper functions used for Div, Remainder operation on u64 ****/ ··· 590 return -ENOTTY; 591 } 592 593 + static DEFINE_MUTEX(ffsport_mutex); 594 + 595 int GLOB_SBD_unlocked_ioctl(struct block_device *bdev, fmode_t mode, 596 unsigned int cmd, unsigned long arg) 597 { 598 int ret; 599 600 + mutex_lock(&ffsport_mutex); 601 ret = GLOB_SBD_ioctl(bdev, mode, cmd, arg); 602 + mutex_unlock(&ffsport_mutex); 603 604 return ret; 605 }
+4 -3
drivers/telephony/ixj.c
··· 257 #include <linux/fs.h> /* everything... */ 258 #include <linux/errno.h> /* error codes */ 259 #include <linux/slab.h> 260 - #include <linux/smp_lock.h> 261 #include <linux/mm.h> 262 #include <linux/ioport.h> 263 #include <linux/interrupt.h> ··· 277 #define TYPE(inode) (iminor(inode) >> 4) 278 #define NUM(inode) (iminor(inode) & 0xf) 279 280 static int ixjdebug; 281 static int hertz = HZ; 282 static int samplerate = 100; ··· 6656 static long ixj_ioctl(struct file *file_p, unsigned int cmd, unsigned long arg) 6657 { 6658 long ret; 6659 - lock_kernel(); 6660 ret = do_ixj_ioctl(file_p, cmd, arg); 6661 - unlock_kernel(); 6662 return ret; 6663 } 6664
··· 257 #include <linux/fs.h> /* everything... */ 258 #include <linux/errno.h> /* error codes */ 259 #include <linux/slab.h> 260 + #include <linux/mutex.h> 261 #include <linux/mm.h> 262 #include <linux/ioport.h> 263 #include <linux/interrupt.h> ··· 277 #define TYPE(inode) (iminor(inode) >> 4) 278 #define NUM(inode) (iminor(inode) & 0xf) 279 280 + static DEFINE_MUTEX(ixj_mutex); 281 static int ixjdebug; 282 static int hertz = HZ; 283 static int samplerate = 100; ··· 6655 static long ixj_ioctl(struct file *file_p, unsigned int cmd, unsigned long arg) 6656 { 6657 long ret; 6658 + mutex_lock(&ixj_mutex); 6659 ret = do_ixj_ioctl(file_p, cmd, arg); 6660 + mutex_unlock(&ixj_mutex); 6661 return ret; 6662 } 6663
+8 -7
drivers/watchdog/cpwd.c
··· 25 #include <linux/ioport.h> 26 #include <linux/timer.h> 27 #include <linux/slab.h> 28 - #include <linux/smp_lock.h> 29 #include <linux/io.h> 30 #include <linux/of.h> 31 #include <linux/of_device.h> ··· 89 } devs[WD_NUMDEVS]; 90 }; 91 92 static struct cpwd *cpwd_device; 93 94 /* Sun uses Altera PLD EPF8820ATC144-4 ··· 369 { 370 struct cpwd *p = cpwd_device; 371 372 - lock_kernel(); 373 switch (iminor(inode)) { 374 case WD0_MINOR: 375 case WD1_MINOR: ··· 377 break; 378 379 default: 380 - unlock_kernel(); 381 return -ENODEV; 382 } 383 ··· 387 IRQF_SHARED, DRIVER_NAME, p)) { 388 printk(KERN_ERR PFX "Cannot register IRQ %d\n", 389 p->irq); 390 - unlock_kernel(); 391 return -EBUSY; 392 } 393 p->initialized = true; 394 } 395 396 - unlock_kernel(); 397 398 return nonseekable_open(inode, f); 399 } ··· 483 case WIOCSTART: 484 case WIOCSTOP: 485 case WIOCGSTAT: 486 - lock_kernel(); 487 rval = cpwd_ioctl(file, cmd, arg); 488 - unlock_kernel(); 489 break; 490 491 /* everything else is handled by the generic compat layer */
··· 25 #include <linux/ioport.h> 26 #include <linux/timer.h> 27 #include <linux/slab.h> 28 + #include <linux/mutex.h> 29 #include <linux/io.h> 30 #include <linux/of.h> 31 #include <linux/of_device.h> ··· 89 } devs[WD_NUMDEVS]; 90 }; 91 92 + static DEFINE_MUTEX(cpwd_mutex); 93 static struct cpwd *cpwd_device; 94 95 /* Sun uses Altera PLD EPF8820ATC144-4 ··· 368 { 369 struct cpwd *p = cpwd_device; 370 371 + mutex_lock(&cpwd_mutex); 372 switch (iminor(inode)) { 373 case WD0_MINOR: 374 case WD1_MINOR: ··· 376 break; 377 378 default: 379 + mutex_unlock(&cpwd_mutex); 380 return -ENODEV; 381 } 382 ··· 386 IRQF_SHARED, DRIVER_NAME, p)) { 387 printk(KERN_ERR PFX "Cannot register IRQ %d\n", 388 p->irq); 389 + mutex_unlock(&cpwd_mutex); 390 return -EBUSY; 391 } 392 p->initialized = true; 393 } 394 395 + mutex_unlock(&cpwd_mutex); 396 397 return nonseekable_open(inode, f); 398 } ··· 482 case WIOCSTART: 483 case WIOCSTOP: 484 case WIOCGSTAT: 485 + mutex_lock(&cpwd_mutex); 486 rval = cpwd_ioctl(file, cmd, arg); 487 + mutex_unlock(&cpwd_mutex); 488 break; 489 490 /* everything else is handled by the generic compat layer */