Skip to content

Commit

Permalink
mnt: release locks on error path in do_loopback
Browse files Browse the repository at this point in the history
do_loopback calls lock_mount(path) and forget to unlock_mount
if clone_mnt or copy_mnt fails.

[   77.661566] ================================================
[   77.662939] [ BUG: lock held when returning to user space! ]
[   77.664104] 3.9.0-rc5+ #17 Not tainted
[   77.664982] ------------------------------------------------
[   77.666488] mount/514 is leaving the kernel with locks still held!
[   77.668027] 2 locks held by mount/514:
[   77.668817]  #0:  (&sb->s_type->i_mutex_key#7){+.+.+.}, at: [<ffffffff811cca22>] lock_mount+0x32/0xe0
[   77.671755]  #1:  (&namespace_sem){+++++.}, at: [<ffffffff811cca3a>] lock_mount+0x4a/0xe0

Signed-off-by: Andrey Vagin <[email protected]>
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
avagin authored and Al Viro committed Apr 9, 2013
1 parent ccf9320 commit e9c5d8a
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion fs/namespace.c
Original file line number Diff line number Diff line change
Expand Up @@ -1686,7 +1686,7 @@ static int do_loopback(struct path *path, const char *old_name,

if (IS_ERR(mnt)) {
err = PTR_ERR(mnt);
goto out;
goto out2;
}

err = graft_tree(mnt, path);
Expand Down

0 comments on commit e9c5d8a

Please sign in to comment.