diff options
Diffstat (limited to 'drivers/cdrom/viocd.c')
-rw-r--r-- | drivers/cdrom/viocd.c | 15 |
1 files changed, 8 insertions, 7 deletions
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 | } |