summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAndy Lutomirski <luto@amacapital.net>2014-06-10 12:45:42 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-06-16 13:40:32 -0700
commit5bacea89dc8dfd3f7d7dfbed798f3b41d4f53c78 (patch)
tree4689f0ec219452cefda5484b921598ae5dac7cea /include/linux
parentfce5b5fc495819be9eef7d4d41a9659b2968c7ea (diff)
downloadlinux-stable-5bacea89dc8dfd3f7d7dfbed798f3b41d4f53c78.tar.gz
linux-stable-5bacea89dc8dfd3f7d7dfbed798f3b41d4f53c78.tar.bz2
linux-stable-5bacea89dc8dfd3f7d7dfbed798f3b41d4f53c78.zip
fs,userns: Change inode_capable to capable_wrt_inode_uidgid
commit 23adbe12ef7d3d4195e80800ab36b37bee28cd03 upstream. The kernel has no concept of capabilities with respect to inodes; inodes exist independently of namespaces. For example, inode_capable(inode, CAP_LINUX_IMMUTABLE) would be nonsense. This patch changes inode_capable to check for uid and gid mappings and renames it to capable_wrt_inode_uidgid, which should make it more obvious what it does. Fixes CVE-2014-4014. Cc: Theodore Ts'o <tytso@mit.edu> Cc: Serge Hallyn <serge.hallyn@ubuntu.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Dave Chinner <david@fromorbit.com> Signed-off-by: Andy Lutomirski <luto@amacapital.net> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/capability.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/capability.h b/include/linux/capability.h
index a6ee1f9a5018..84b13ad67c1c 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -210,7 +210,7 @@ extern bool has_ns_capability_noaudit(struct task_struct *t,
struct user_namespace *ns, int cap);
extern bool capable(int cap);
extern bool ns_capable(struct user_namespace *ns, int cap);
-extern bool inode_capable(const struct inode *inode, int cap);
+extern bool capable_wrt_inode_uidgid(const struct inode *inode, int cap);
extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap);
/* audit system wants to get cap info from files as well */