Btrfs: add the missing mutex unlock in write_all_supers()
authorStefan Behrens <sbehrens@giantdisaster.de>
Wed, 11 Sep 2013 07:59:22 +0000 (09:59 +0200)
committerChris Mason <chris.mason@fusionio.com>
Sat, 21 Sep 2013 15:05:28 +0000 (11:05 -0400)
The BUG() was replaced by btrfs_error() and return -EIO with the
patch "get rid of one BUG() in write_all_supers()", but the missing
mutex_unlock() was overlooked.

The 0-DAY kernel build service from Intel reported the missing
unlock which was found by the coccinelle tool:

    fs/btrfs/disk-io.c:3422:2-8: preceding lock on line 3374

Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
fs/btrfs/disk-io.c

index 72cf08b2be853b25f40a3951392d6962232defe1..4ae17ed13b3274f228c8879383ec5124ca5f05dd 100644 (file)
@@ -3416,6 +3416,7 @@ static int write_all_supers(struct btrfs_root *root, int max_mirrors)
        if (total_errors > max_errors) {
                printk(KERN_ERR "btrfs: %d errors while writing supers\n",
                       total_errors);
+               mutex_unlock(&root->fs_info->fs_devices->device_list_mutex);
 
                /* FUA is masked off if unsupported and can't be the reason */
                btrfs_error(root->fs_info, -EIO,