summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/hv/blkvsc_drv.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index cfef1c0bfb3..74d51bb7870 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -249,12 +249,13 @@ static int blkvsc_submit_request(struct blkvsc_request *blkvsc_req,
static int blkvsc_open(struct block_device *bdev, fmode_t mode)
{
struct block_device_context *blkdev = bdev->bd_disk->private_data;
+ unsigned long flags;
- spin_lock(&blkdev->lock);
+ spin_lock_irqsave(&blkdev->lock, flags);
blkdev->users++;
- spin_unlock(&blkdev->lock);
+ spin_unlock_irqrestore(&blkdev->lock, flags);
return 0;
}
@@ -616,17 +617,18 @@ static void blkvsc_shutdown(struct hv_device *dev)
static int blkvsc_release(struct gendisk *disk, fmode_t mode)
{
struct block_device_context *blkdev = disk->private_data;
+ unsigned long flags;
- spin_lock(&blkdev->lock);
+ spin_lock_irqsave(&blkdev->lock, flags);
if (blkdev->users == 1) {
- spin_unlock(&blkdev->lock);
+ spin_unlock_irqrestore(&blkdev->lock, flags);
blkvsc_do_operation(blkdev, DO_FLUSH);
- spin_lock(&blkdev->lock);
+ spin_lock_irqsave(&blkdev->lock, flags);
}
blkdev->users--;
- spin_unlock(&blkdev->lock);
+ spin_unlock_irqrestore(&blkdev->lock, flags);
return 0;
}