Skip to content

Commit a4859d7

Browse files
author
Miklos Szeredi
committed
ovl: fix dentry leak for default_permissions
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+
1 parent 4c2e07c commit a4859d7

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

fs/overlayfs/inode.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,16 +121,18 @@ int ovl_permission(struct inode *inode, int mask)
121121

122122
err = vfs_getattr(&realpath, &stat);
123123
if (err)
124-
return err;
124+
goto out_dput;
125125

126+
err = -ESTALE;
126127
if ((stat.mode ^ inode->i_mode) & S_IFMT)
127-
return -ESTALE;
128+
goto out_dput;
128129

129130
inode->i_mode = stat.mode;
130131
inode->i_uid = stat.uid;
131132
inode->i_gid = stat.gid;
132133

133-
return generic_permission(inode, mask);
134+
err = generic_permission(inode, mask);
135+
goto out_dput;
134136
}
135137

136138
/* Careful in RCU walk mode */

0 commit comments

Comments
 (0)