summaryrefslogtreecommitdiffstats
path: root/security/dummy.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-07-10 08:17:14 +0200
committerIngo Molnar <mingo@elte.hu>2008-07-10 08:17:14 +0200
commit9e4144abf8a30ae221311368bbb10690ebdb4b76 (patch)
tree032289d5b7d87976675c1a1a32d512a44d234fa2 /security/dummy.c
parente17ba73b0ee6c0f24393c48b455e0d8db761782c (diff)
parent6329d3021bcfa9038621e6e917d98929421d8ec8 (diff)
downloadblackbird-op-linux-9e4144abf8a30ae221311368bbb10690ebdb4b76.tar.gz
blackbird-op-linux-9e4144abf8a30ae221311368bbb10690ebdb4b76.zip
Merge branch 'linus' into core/printk
Conflicts: kernel/printk.c Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'security/dummy.c')
-rw-r--r--security/dummy.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/security/dummy.c b/security/dummy.c
index f50c6c3c32c9..b8916883b77f 100644
--- a/security/dummy.c
+++ b/security/dummy.c
@@ -27,6 +27,8 @@
#include <linux/hugetlb.h>
#include <linux/ptrace.h>
#include <linux/file.h>
+#include <linux/prctl.h>
+#include <linux/securebits.h>
static int dummy_ptrace (struct task_struct *parent, struct task_struct *child)
{
@@ -607,7 +609,27 @@ static int dummy_task_kill (struct task_struct *p, struct siginfo *info,
static int dummy_task_prctl (int option, unsigned long arg2, unsigned long arg3,
unsigned long arg4, unsigned long arg5, long *rc_p)
{
- return 0;
+ switch (option) {
+ case PR_CAPBSET_READ:
+ *rc_p = (cap_valid(arg2) ? 1 : -EINVAL);
+ break;
+ case PR_GET_KEEPCAPS:
+ *rc_p = issecure(SECURE_KEEP_CAPS);
+ break;
+ case PR_SET_KEEPCAPS:
+ if (arg2 > 1)
+ *rc_p = -EINVAL;
+ else if (arg2)
+ current->securebits |= issecure_mask(SECURE_KEEP_CAPS);
+ else
+ current->securebits &=
+ ~issecure_mask(SECURE_KEEP_CAPS);
+ break;
+ default:
+ return 0;
+ }
+
+ return 1;
}
static void dummy_task_reparent_to_init (struct task_struct *p)
OpenPOWER on IntegriCloud