Merge branch 'for-3.10/core' of git://git.kernel.dk/linux-block
[firefly-linux-kernel-4.4.55.git] / drivers / block / loop.c
index dfe758382eafe71861f244f3436ce2db06f5f541..d92d50fd84b7d4ec59d5537eed5d9fd288005c51 100644 (file)
@@ -230,9 +230,11 @@ static int __do_lo_send_write(struct file *file,
        ssize_t bw;
        mm_segment_t old_fs = get_fs();
 
+       file_start_write(file);
        set_fs(get_ds());
        bw = file->f_op->write(file, buf, len, &pos);
        set_fs(old_fs);
+       file_end_write(file);
        if (likely(bw == len))
                return 0;
        printk(KERN_ERR "loop: Write error at byte offset %llu, length %i.\n",
@@ -1516,7 +1518,7 @@ out:
        return err;
 }
 
-static int lo_release(struct gendisk *disk, fmode_t mode)
+static void lo_release(struct gendisk *disk, fmode_t mode)
 {
        struct loop_device *lo = disk->private_data;
        int err;
@@ -1533,7 +1535,7 @@ static int lo_release(struct gendisk *disk, fmode_t mode)
                 */
                err = loop_clr_fd(lo);
                if (!err)
-                       goto out_unlocked;
+                       return;
        } else {
                /*
                 * Otherwise keep thread (if running) and config,
@@ -1544,8 +1546,6 @@ static int lo_release(struct gendisk *disk, fmode_t mode)
 
 out:
        mutex_unlock(&lo->lo_ctl_mutex);
-out_unlocked:
-       return 0;
 }
 
 static const struct block_device_operations lo_fops = {