diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2007-05-08 03:30:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 14:15:12 -0400 |
commit | ee6f958291e2a768fd727e7a67badfff0b67711a (patch) | |
tree | 1313cb3a5d50a296b1801022f904f3a5e9601de2 /fs/namespace.c | |
parent | 2f1a2ccb9c0de632ab07193becf5f7121794f6ae (diff) |
check privileges before setting mount propagation
There's a missing check for CAP_SYS_ADMIN in do_change_type().
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/namespace.c')
-rw-r--r-- | fs/namespace.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index 72bb1062bfe7..b696e3a0d18f 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -886,6 +886,9 @@ static int do_change_type(struct nameidata *nd, int flag) | |||
886 | int recurse = flag & MS_REC; | 886 | int recurse = flag & MS_REC; |
887 | int type = flag & ~MS_REC; | 887 | int type = flag & ~MS_REC; |
888 | 888 | ||
889 | if (!capable(CAP_SYS_ADMIN)) | ||
890 | return -EPERM; | ||
891 | |||
889 | if (nd->dentry != nd->mnt->mnt_root) | 892 | if (nd->dentry != nd->mnt->mnt_root) |
890 | return -EINVAL; | 893 | return -EINVAL; |
891 | 894 | ||