diff options
author | Arnd Bergmann <arnd@arndb.de> | 2010-06-02 08:28:52 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2010-10-05 09:01:10 -0400 |
commit | 2a48fc0ab24241755dc93bfd4f01d68efab47f5a (patch) | |
tree | fa9ae10ce89b26b7d8ae9ce24bdfda5e3007b763 /drivers/cdrom | |
parent | 613655fa39ff6957754fa8ceb8559980920eb8ee (diff) |
block: autoconvert trivial BKL users to private mutex
The block device drivers have all gained new lock_kernel
calls from a recent pushdown, and some of the drivers
were already using the BKL before.
This turns the BKL into a set of per-driver mutexes.
Still need to check whether this is safe to do.
file=$1
name=$2
if grep -q lock_kernel ${file} ; then
if grep -q 'include.*linux.mutex.h' ${file} ; then
sed -i '/include.*<linux\/smp_lock.h>/d' ${file}
else
sed -i 's/include.*<linux\/smp_lock.h>.*$/include <linux\/mutex.h>/g' ${file}
fi
sed -i ${file} \
-e "/^#include.*linux.mutex.h/,$ {
1,/^\(static\|int\|long\)/ {
/^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);
} }" \
-e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
-e '/[ ]*cycle_kernel_lock();/d'
else
sed -i -e '/include.*\<smp_lock.h\>/d' ${file} \
-e '/cycle_kernel_lock()/d'
fi
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/cdrom')
-rw-r--r-- | drivers/cdrom/gdrom.c | 15 | ||||
-rw-r--r-- | drivers/cdrom/viocd.c | 15 |
2 files changed, 16 insertions, 14 deletions
diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c index 261107d1457c..3af6516919b7 100644 --- a/drivers/cdrom/gdrom.c +++ b/drivers/cdrom/gdrom.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <linux/blkdev.h> | 34 | #include <linux/blkdev.h> |
35 | #include <linux/interrupt.h> | 35 | #include <linux/interrupt.h> |
36 | #include <linux/device.h> | 36 | #include <linux/device.h> |
37 | #include <linux/smp_lock.h> | 37 | #include <linux/mutex.h> |
38 | #include <linux/wait.h> | 38 | #include <linux/wait.h> |
39 | #include <linux/workqueue.h> | 39 | #include <linux/workqueue.h> |
40 | #include <linux/platform_device.h> | 40 | #include <linux/platform_device.h> |
@@ -81,6 +81,7 @@ | |||
81 | 81 | ||
82 | #define GDROM_DEFAULT_TIMEOUT (HZ * 7) | 82 | #define GDROM_DEFAULT_TIMEOUT (HZ * 7) |
83 | 83 | ||
84 | static DEFINE_MUTEX(gdrom_mutex); | ||
84 | static const struct { | 85 | static const struct { |
85 | int sense_key; | 86 | int sense_key; |
86 | const char * const text; | 87 | const char * const text; |
@@ -494,17 +495,17 @@ static struct cdrom_device_ops gdrom_ops = { | |||
494 | static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode) | 495 | static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode) |
495 | { | 496 | { |
496 | int ret; | 497 | int ret; |
497 | lock_kernel(); | 498 | mutex_lock(&gdrom_mutex); |
498 | ret = cdrom_open(gd.cd_info, bdev, mode); | 499 | ret = cdrom_open(gd.cd_info, bdev, mode); |
499 | unlock_kernel(); | 500 | mutex_unlock(&gdrom_mutex); |
500 | return ret; | 501 | return ret; |
501 | } | 502 | } |
502 | 503 | ||
503 | static int gdrom_bdops_release(struct gendisk *disk, fmode_t mode) | 504 | static int gdrom_bdops_release(struct gendisk *disk, fmode_t mode) |
504 | { | 505 | { |
505 | lock_kernel(); | 506 | mutex_lock(&gdrom_mutex); |
506 | cdrom_release(gd.cd_info, mode); | 507 | cdrom_release(gd.cd_info, mode); |
507 | unlock_kernel(); | 508 | mutex_unlock(&gdrom_mutex); |
508 | return 0; | 509 | return 0; |
509 | } | 510 | } |
510 | 511 | ||
@@ -518,9 +519,9 @@ static int gdrom_bdops_ioctl(struct block_device *bdev, fmode_t mode, | |||
518 | { | 519 | { |
519 | int ret; | 520 | int ret; |
520 | 521 | ||
521 | lock_kernel(); | 522 | mutex_lock(&gdrom_mutex); |
522 | ret = cdrom_ioctl(gd.cd_info, bdev, mode, cmd, arg); | 523 | ret = cdrom_ioctl(gd.cd_info, bdev, mode, cmd, arg); |
523 | unlock_kernel(); | 524 | mutex_unlock(&gdrom_mutex); |
524 | 525 | ||
525 | return ret; | 526 | return ret; |
526 | } | 527 | } |
diff --git a/drivers/cdrom/viocd.c b/drivers/cdrom/viocd.c index 56bf9f44700c..be73a9b493a6 100644 --- a/drivers/cdrom/viocd.c +++ b/drivers/cdrom/viocd.c | |||
@@ -42,7 +42,7 @@ | |||
42 | #include <linux/module.h> | 42 | #include <linux/module.h> |
43 | #include <linux/completion.h> | 43 | #include <linux/completion.h> |
44 | #include <linux/proc_fs.h> | 44 | #include <linux/proc_fs.h> |
45 | #include <linux/smp_lock.h> | 45 | #include <linux/mutex.h> |
46 | #include <linux/seq_file.h> | 46 | #include <linux/seq_file.h> |
47 | #include <linux/scatterlist.h> | 47 | #include <linux/scatterlist.h> |
48 | 48 | ||
@@ -61,6 +61,7 @@ | |||
61 | */ | 61 | */ |
62 | #define VIOCD_MAX_CD HVMAXARCHITECTEDVIRTUALCDROMS | 62 | #define VIOCD_MAX_CD HVMAXARCHITECTEDVIRTUALCDROMS |
63 | 63 | ||
64 | static DEFINE_MUTEX(viocd_mutex); | ||
64 | static const struct vio_error_entry viocd_err_table[] = { | 65 | static const struct vio_error_entry viocd_err_table[] = { |
65 | {0x0201, EINVAL, "Invalid Range"}, | 66 | {0x0201, EINVAL, "Invalid Range"}, |
66 | {0x0202, EINVAL, "Invalid Token"}, | 67 | {0x0202, EINVAL, "Invalid Token"}, |
@@ -156,9 +157,9 @@ static int viocd_blk_open(struct block_device *bdev, fmode_t mode) | |||
156 | struct disk_info *di = bdev->bd_disk->private_data; | 157 | struct disk_info *di = bdev->bd_disk->private_data; |
157 | int ret; | 158 | int ret; |
158 | 159 | ||
159 | lock_kernel(); | 160 | mutex_lock(&viocd_mutex); |
160 | ret = cdrom_open(&di->viocd_info, bdev, mode); | 161 | ret = cdrom_open(&di->viocd_info, bdev, mode); |
161 | unlock_kernel(); | 162 | mutex_unlock(&viocd_mutex); |
162 | 163 | ||
163 | return ret; | 164 | return ret; |
164 | } | 165 | } |
@@ -166,9 +167,9 @@ static int viocd_blk_open(struct block_device *bdev, fmode_t mode) | |||
166 | static int viocd_blk_release(struct gendisk *disk, fmode_t mode) | 167 | static int viocd_blk_release(struct gendisk *disk, fmode_t mode) |
167 | { | 168 | { |
168 | struct disk_info *di = disk->private_data; | 169 | struct disk_info *di = disk->private_data; |
169 | lock_kernel(); | 170 | mutex_lock(&viocd_mutex); |
170 | cdrom_release(&di->viocd_info, mode); | 171 | cdrom_release(&di->viocd_info, mode); |
171 | unlock_kernel(); | 172 | mutex_unlock(&viocd_mutex); |
172 | return 0; | 173 | return 0; |
173 | } | 174 | } |
174 | 175 | ||
@@ -178,9 +179,9 @@ static int viocd_blk_ioctl(struct block_device *bdev, fmode_t mode, | |||
178 | struct disk_info *di = bdev->bd_disk->private_data; | 179 | struct disk_info *di = bdev->bd_disk->private_data; |
179 | int ret; | 180 | int ret; |
180 | 181 | ||
181 | lock_kernel(); | 182 | mutex_lock(&viocd_mutex); |
182 | ret = cdrom_ioctl(&di->viocd_info, bdev, mode, cmd, arg); | 183 | ret = cdrom_ioctl(&di->viocd_info, bdev, mode, cmd, arg); |
183 | unlock_kernel(); | 184 | mutex_unlock(&viocd_mutex); |
184 | 185 | ||
185 | return ret; | 186 | return ret; |
186 | } | 187 | } |