diff options
Diffstat (limited to 'drivers/block/xsysace.c')
| -rw-r--r-- | drivers/block/xsysace.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c index 057413bb16e2..6e968cd4893c 100644 --- a/drivers/block/xsysace.c +++ b/drivers/block/xsysace.c | |||
| @@ -89,7 +89,7 @@ | |||
| 89 | #include <linux/delay.h> | 89 | #include <linux/delay.h> |
| 90 | #include <linux/slab.h> | 90 | #include <linux/slab.h> |
| 91 | #include <linux/blkdev.h> | 91 | #include <linux/blkdev.h> |
| 92 | #include <linux/smp_lock.h> | 92 | #include <linux/mutex.h> |
| 93 | #include <linux/ata.h> | 93 | #include <linux/ata.h> |
| 94 | #include <linux/hdreg.h> | 94 | #include <linux/hdreg.h> |
| 95 | #include <linux/platform_device.h> | 95 | #include <linux/platform_device.h> |
| @@ -214,6 +214,7 @@ struct ace_device { | |||
| 214 | u16 cf_id[ATA_ID_WORDS]; | 214 | u16 cf_id[ATA_ID_WORDS]; |
| 215 | }; | 215 | }; |
| 216 | 216 | ||
| 217 | static DEFINE_MUTEX(xsysace_mutex); | ||
| 217 | static int ace_major; | 218 | static int ace_major; |
| 218 | 219 | ||
| 219 | /* --------------------------------------------------------------------- | 220 | /* --------------------------------------------------------------------- |
| @@ -903,13 +904,13 @@ static int ace_open(struct block_device *bdev, fmode_t mode) | |||
| 903 | 904 | ||
| 904 | dev_dbg(ace->dev, "ace_open() users=%i\n", ace->users + 1); | 905 | dev_dbg(ace->dev, "ace_open() users=%i\n", ace->users + 1); |
| 905 | 906 | ||
| 906 | lock_kernel(); | 907 | mutex_lock(&xsysace_mutex); |
| 907 | spin_lock_irqsave(&ace->lock, flags); | 908 | spin_lock_irqsave(&ace->lock, flags); |
| 908 | ace->users++; | 909 | ace->users++; |
| 909 | spin_unlock_irqrestore(&ace->lock, flags); | 910 | spin_unlock_irqrestore(&ace->lock, flags); |
| 910 | 911 | ||
| 911 | check_disk_change(bdev); | 912 | check_disk_change(bdev); |
| 912 | unlock_kernel(); | 913 | mutex_unlock(&xsysace_mutex); |
| 913 | 914 | ||
| 914 | return 0; | 915 | return 0; |
| 915 | } | 916 | } |
| @@ -922,7 +923,7 @@ static int ace_release(struct gendisk *disk, fmode_t mode) | |||
| 922 | 923 | ||
| 923 | dev_dbg(ace->dev, "ace_release() users=%i\n", ace->users - 1); | 924 | dev_dbg(ace->dev, "ace_release() users=%i\n", ace->users - 1); |
| 924 | 925 | ||
| 925 | lock_kernel(); | 926 | mutex_lock(&xsysace_mutex); |
| 926 | spin_lock_irqsave(&ace->lock, flags); | 927 | spin_lock_irqsave(&ace->lock, flags); |
| 927 | ace->users--; | 928 | ace->users--; |
| 928 | if (ace->users == 0) { | 929 | if (ace->users == 0) { |
| @@ -930,7 +931,7 @@ static int ace_release(struct gendisk *disk, fmode_t mode) | |||
| 930 | ace_out(ace, ACE_CTRL, val & ~ACE_CTRL_LOCKREQ); | 931 | ace_out(ace, ACE_CTRL, val & ~ACE_CTRL_LOCKREQ); |
| 931 | } | 932 | } |
| 932 | spin_unlock_irqrestore(&ace->lock, flags); | 933 | spin_unlock_irqrestore(&ace->lock, flags); |
| 933 | unlock_kernel(); | 934 | mutex_unlock(&xsysace_mutex); |
| 934 | return 0; | 935 | return 0; |
| 935 | } | 936 | } |
| 936 | 937 | ||
