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