aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/block/loop.c6
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;