Skip to content

Commit

Permalink
ovl: fix dentry leak for default_permissions
Browse files Browse the repository at this point in the history
When using the 'default_permissions' mount option, ovl_permission() on
non-directories was missing a dput(alias), resulting in "BUG Dentry still
in use".

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Fixes: 8d3095f ("ovl: default permissions")
Cc: <stable@vger.kernel.org> # v4.5+
  • Loading branch information
Miklos Szeredi committed Jun 29, 2016
1 parent 4c2e07c commit a4859d7
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions fs/overlayfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,16 +121,18 @@ int ovl_permission(struct inode *inode, int mask)

err = vfs_getattr(&realpath, &stat);
if (err)
return err;
goto out_dput;

err = -ESTALE;
if ((stat.mode ^ inode->i_mode) & S_IFMT)
return -ESTALE;
goto out_dput;

inode->i_mode = stat.mode;
inode->i_uid = stat.uid;
inode->i_gid = stat.gid;

return generic_permission(inode, mask);
err = generic_permission(inode, mask);
goto out_dput;
}

/* Careful in RCU walk mode */
Expand Down

0 comments on commit a4859d7

Please sign in to comment.