diff options
-rw-r--r-- | drivers/block/loop.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 3defc52f060c..4720c7ade0ae 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c | |||
@@ -743,10 +743,10 @@ static ssize_t loop_attr_backing_file_show(struct loop_device *lo, char *buf) | |||
743 | ssize_t ret; | 743 | ssize_t ret; |
744 | char *p = NULL; | 744 | char *p = NULL; |
745 | 745 | ||
746 | mutex_lock(&lo->lo_ctl_mutex); | 746 | spin_lock_irq(&lo->lo_lock); |
747 | if (lo->lo_backing_file) | 747 | if (lo->lo_backing_file) |
748 | p = d_path(&lo->lo_backing_file->f_path, buf, PAGE_SIZE - 1); | 748 | p = d_path(&lo->lo_backing_file->f_path, buf, PAGE_SIZE - 1); |
749 | mutex_unlock(&lo->lo_ctl_mutex); | 749 | spin_unlock_irq(&lo->lo_lock); |
750 | 750 | ||
751 | if (IS_ERR_OR_NULL(p)) | 751 | if (IS_ERR_OR_NULL(p)) |
752 | ret = PTR_ERR(p); | 752 | ret = PTR_ERR(p); |
@@ -1000,7 +1000,9 @@ static int loop_clr_fd(struct loop_device *lo, struct block_device *bdev) | |||
1000 | 1000 | ||
1001 | kthread_stop(lo->lo_thread); | 1001 | kthread_stop(lo->lo_thread); |
1002 | 1002 | ||
1003 | spin_lock_irq(&lo->lo_lock); | ||
1003 | lo->lo_backing_file = NULL; | 1004 | lo->lo_backing_file = NULL; |
1005 | spin_unlock_irq(&lo->lo_lock); | ||
1004 | 1006 | ||
1005 | loop_release_xfer(lo); | 1007 | loop_release_xfer(lo); |
1006 | lo->transfer = NULL; | 1008 | lo->transfer = NULL; |