diff options
Diffstat (limited to 'drivers/scsi/sr.c')
-rw-r--r-- | drivers/scsi/sr.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c index ba9c3e0387ce..e148341079b5 100644 --- a/drivers/scsi/sr.c +++ b/drivers/scsi/sr.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #include <linux/init.h> | 44 | #include <linux/init.h> |
45 | #include <linux/blkdev.h> | 45 | #include <linux/blkdev.h> |
46 | #include <linux/mutex.h> | 46 | #include <linux/mutex.h> |
47 | #include <linux/smp_lock.h> | ||
48 | #include <linux/slab.h> | 47 | #include <linux/slab.h> |
49 | #include <asm/uaccess.h> | 48 | #include <asm/uaccess.h> |
50 | 49 | ||
@@ -76,6 +75,7 @@ MODULE_ALIAS_SCSI_DEVICE(TYPE_WORM); | |||
76 | CDC_CD_R|CDC_CD_RW|CDC_DVD|CDC_DVD_R|CDC_DVD_RAM|CDC_GENERIC_PACKET| \ | 75 | 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) | 76 | CDC_MRW|CDC_MRW_W|CDC_RAM) |
78 | 77 | ||
78 | static DEFINE_MUTEX(sr_mutex); | ||
79 | static int sr_probe(struct device *); | 79 | static int sr_probe(struct device *); |
80 | static int sr_remove(struct device *); | 80 | static int sr_remove(struct device *); |
81 | static int sr_done(struct scsi_cmnd *); | 81 | static int sr_done(struct scsi_cmnd *); |
@@ -470,24 +470,24 @@ static int sr_block_open(struct block_device *bdev, fmode_t mode) | |||
470 | struct scsi_cd *cd; | 470 | struct scsi_cd *cd; |
471 | int ret = -ENXIO; | 471 | int ret = -ENXIO; |
472 | 472 | ||
473 | lock_kernel(); | 473 | mutex_lock(&sr_mutex); |
474 | cd = scsi_cd_get(bdev->bd_disk); | 474 | cd = scsi_cd_get(bdev->bd_disk); |
475 | if (cd) { | 475 | if (cd) { |
476 | ret = cdrom_open(&cd->cdi, bdev, mode); | 476 | ret = cdrom_open(&cd->cdi, bdev, mode); |
477 | if (ret) | 477 | if (ret) |
478 | scsi_cd_put(cd); | 478 | scsi_cd_put(cd); |
479 | } | 479 | } |
480 | unlock_kernel(); | 480 | mutex_unlock(&sr_mutex); |
481 | return ret; | 481 | return ret; |
482 | } | 482 | } |
483 | 483 | ||
484 | static int sr_block_release(struct gendisk *disk, fmode_t mode) | 484 | static int sr_block_release(struct gendisk *disk, fmode_t mode) |
485 | { | 485 | { |
486 | struct scsi_cd *cd = scsi_cd(disk); | 486 | struct scsi_cd *cd = scsi_cd(disk); |
487 | lock_kernel(); | 487 | mutex_lock(&sr_mutex); |
488 | cdrom_release(&cd->cdi, mode); | 488 | cdrom_release(&cd->cdi, mode); |
489 | scsi_cd_put(cd); | 489 | scsi_cd_put(cd); |
490 | unlock_kernel(); | 490 | mutex_unlock(&sr_mutex); |
491 | return 0; | 491 | return 0; |
492 | } | 492 | } |
493 | 493 | ||
@@ -499,7 +499,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, | |||
499 | void __user *argp = (void __user *)arg; | 499 | void __user *argp = (void __user *)arg; |
500 | int ret; | 500 | int ret; |
501 | 501 | ||
502 | lock_kernel(); | 502 | mutex_lock(&sr_mutex); |
503 | 503 | ||
504 | /* | 504 | /* |
505 | * Send SCSI addressing ioctls directly to mid level, send other | 505 | * Send SCSI addressing ioctls directly to mid level, send other |
@@ -529,7 +529,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, | |||
529 | ret = scsi_ioctl(sdev, cmd, argp); | 529 | ret = scsi_ioctl(sdev, cmd, argp); |
530 | 530 | ||
531 | out: | 531 | out: |
532 | unlock_kernel(); | 532 | mutex_unlock(&sr_mutex); |
533 | return ret; | 533 | return ret; |
534 | } | 534 | } |
535 | 535 | ||