aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2014-01-23 18:55:34 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-23 19:37:01 -0500
commit942be3875a1931c379bbc37053829dd6847e0f3f (patch)
treeb601300c01f71ee23f817fa104fc52329ed1d747
parent7288e1187ba935996232246916418c64bb88da30 (diff)
coredump: make __get_dumpable/get_dumpable inline, kill fs/coredump.h
1. Remove fs/coredump.h. It is not clear why do we need it, it only declares __get_dumpable(), signal.c includes it for no reason. 2. Now that get_dumpable() and __get_dumpable() are really trivial make them inline in linux/sched.h. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Kees Cook <keescook@chromium.org> Cc: Alex Kelly <alex.page.kelly@gmail.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Josh Triplett <josh@joshtriplett.org> Cc: Petr Matousek <pmatouse@redhat.com> Cc: Vasily Kulikov <segoon@openwall.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/coredump.c1
-rw-r--r--fs/coredump.h6
-rw-r--r--fs/exec.c18
-rw-r--r--include/linux/sched.h21
4 files changed, 17 insertions, 29 deletions
diff --git a/fs/coredump.c b/fs/coredump.c
index bc3fbcd32558..e3ad709a4232 100644
--- a/fs/coredump.c
+++ b/fs/coredump.c
@@ -40,7 +40,6 @@
40 40
41#include <trace/events/task.h> 41#include <trace/events/task.h>
42#include "internal.h" 42#include "internal.h"
43#include "coredump.h"
44 43
45#include <trace/events/sched.h> 44#include <trace/events/sched.h>
46 45
diff --git a/fs/coredump.h b/fs/coredump.h
deleted file mode 100644
index e39ff072110d..000000000000
--- a/fs/coredump.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef _FS_COREDUMP_H
2#define _FS_COREDUMP_H
3
4extern int __get_dumpable(unsigned long mm_flags);
5
6#endif
diff --git a/fs/exec.c b/fs/exec.c
index f798da06abac..9cbad5b0187e 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -62,7 +62,6 @@
62 62
63#include <trace/events/task.h> 63#include <trace/events/task.h>
64#include "internal.h" 64#include "internal.h"
65#include "coredump.h"
66 65
67#include <trace/events/sched.h> 66#include <trace/events/sched.h>
68 67
@@ -1609,7 +1608,6 @@ void set_binfmt(struct linux_binfmt *new)
1609 if (new) 1608 if (new)
1610 __module_get(new->module); 1609 __module_get(new->module);
1611} 1610}
1612
1613EXPORT_SYMBOL(set_binfmt); 1611EXPORT_SYMBOL(set_binfmt);
1614 1612
1615/* 1613/*
@@ -1628,22 +1626,6 @@ void set_dumpable(struct mm_struct *mm, int value)
1628 } while (cmpxchg(&mm->flags, old, new) != old); 1626 } while (cmpxchg(&mm->flags, old, new) != old);
1629} 1627}
1630 1628
1631int __get_dumpable(unsigned long mm_flags)
1632{
1633 return mm_flags & MMF_DUMPABLE_MASK;
1634}
1635
1636/*
1637 * This returns the actual value of the suid_dumpable flag. For things
1638 * that are using this for checking for privilege transitions, it must
1639 * test against SUID_DUMP_USER rather than treating it as a boolean
1640 * value.
1641 */
1642int get_dumpable(struct mm_struct *mm)
1643{
1644 return __get_dumpable(mm->flags);
1645}
1646
1647SYSCALL_DEFINE3(execve, 1629SYSCALL_DEFINE3(execve,
1648 const char __user *, filename, 1630 const char __user *, filename,
1649 const char __user *const __user *, argv, 1631 const char __user *const __user *, argv,
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 124430ba569b..cf9e414dbb9e 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -391,10 +391,6 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
391static inline void arch_pick_mmap_layout(struct mm_struct *mm) {} 391static inline void arch_pick_mmap_layout(struct mm_struct *mm) {}
392#endif 392#endif
393 393
394
395extern void set_dumpable(struct mm_struct *mm, int value);
396extern int get_dumpable(struct mm_struct *mm);
397
398#define SUID_DUMP_DISABLE 0 /* No setuid dumping */ 394#define SUID_DUMP_DISABLE 0 /* No setuid dumping */
399#define SUID_DUMP_USER 1 /* Dump as user of process */ 395#define SUID_DUMP_USER 1 /* Dump as user of process */
400#define SUID_DUMP_ROOT 2 /* Dump as root */ 396#define SUID_DUMP_ROOT 2 /* Dump as root */
@@ -405,6 +401,23 @@ extern int get_dumpable(struct mm_struct *mm);
405#define MMF_DUMPABLE_BITS 2 401#define MMF_DUMPABLE_BITS 2
406#define MMF_DUMPABLE_MASK ((1 << MMF_DUMPABLE_BITS) - 1) 402#define MMF_DUMPABLE_MASK ((1 << MMF_DUMPABLE_BITS) - 1)
407 403
404extern void set_dumpable(struct mm_struct *mm, int value);
405/*
406 * This returns the actual value of the suid_dumpable flag. For things
407 * that are using this for checking for privilege transitions, it must
408 * test against SUID_DUMP_USER rather than treating it as a boolean
409 * value.
410 */
411static inline int __get_dumpable(unsigned long mm_flags)
412{
413 return mm_flags & MMF_DUMPABLE_MASK;
414}
415
416static inline int get_dumpable(struct mm_struct *mm)
417{
418 return __get_dumpable(mm->flags);
419}
420
408/* coredump filter bits */ 421/* coredump filter bits */
409#define MMF_DUMP_ANON_PRIVATE 2 422#define MMF_DUMP_ANON_PRIVATE 2
410#define MMF_DUMP_ANON_SHARED 3 423#define MMF_DUMP_ANON_SHARED 3