summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2018-05-23 15:24:18 -0500
committerEric W. Biederman <ebiederm@xmission.com>2018-05-24 11:56:43 -0500
commit55956b59df336f6738da916dbb520b6e37df9fbd (patch)
tree092af72e9a7cb4ac14ddd1941cf82b6c269e0a1b
parent593d1ce854dff93b3c9066e897192eb676b09c46 (diff)
downloadlinux-stable-55956b59df336f6738da916dbb520b6e37df9fbd.tar.gz
linux-stable-55956b59df336f6738da916dbb520b6e37df9fbd.tar.bz2
linux-stable-55956b59df336f6738da916dbb520b6e37df9fbd.zip
vfs: Allow userns root to call mknod on owned filesystems.
These filesystems already always set SB_I_NODEV so mknod will not be useful for gaining control of any devices no matter their permissions. This will allow overlayfs and applications like to fakeroot to use device nodes to represent things on disk. Acked-by: Seth Forshee <seth.forshee@canonical.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
-rw-r--r--fs/namei.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c
index 942c1f096f6b..20335896dcce 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -3679,7 +3679,8 @@ int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
if (error)
return error;
- if ((S_ISCHR(mode) || S_ISBLK(mode)) && !capable(CAP_MKNOD))
+ if ((S_ISCHR(mode) || S_ISBLK(mode)) &&
+ !ns_capable(dentry->d_sb->s_user_ns, CAP_MKNOD))
return -EPERM;
if (!dir->i_op->mknod)