]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - security/dummy.c
security: remove unused sb_get_mnt_opts hook
[linux-2.6-omap-h63xx.git] / security / dummy.c
index f50c6c3c32c9542eb796ba5c162b2bb08ea52ea9..7938566916414a9298fd3a33bcdce03dafe68945 100644 (file)
 #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)
+static int dummy_ptrace (struct task_struct *parent, struct task_struct *child,
+                        unsigned int mode)
 {
        return 0;
 }
@@ -191,6 +194,11 @@ static int dummy_sb_kern_mount (struct super_block *sb, void *data)
        return 0;
 }
 
+static int dummy_sb_show_options(struct seq_file *m, struct super_block *sb)
+{
+       return 0;
+}
+
 static int dummy_sb_statfs (struct dentry *dentry)
 {
        return 0;
@@ -244,13 +252,6 @@ static void dummy_sb_post_pivotroot (struct path *old_path, struct path *new_pat
        return;
 }
 
-static int dummy_sb_get_mnt_opts(const struct super_block *sb,
-                                struct security_mnt_opts *opts)
-{
-       security_init_mnt_opts(opts);
-       return 0;
-}
-
 static int dummy_sb_set_mnt_opts(struct super_block *sb,
                                 struct security_mnt_opts *opts)
 {
@@ -607,7 +608,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)
@@ -1065,6 +1086,7 @@ void security_fixup_ops (struct security_operations *ops)
        set_to_dummy_if_null(ops, sb_free_security);
        set_to_dummy_if_null(ops, sb_copy_data);
        set_to_dummy_if_null(ops, sb_kern_mount);
+       set_to_dummy_if_null(ops, sb_show_options);
        set_to_dummy_if_null(ops, sb_statfs);
        set_to_dummy_if_null(ops, sb_mount);
        set_to_dummy_if_null(ops, sb_check_sb);
@@ -1075,7 +1097,6 @@ void security_fixup_ops (struct security_operations *ops)
        set_to_dummy_if_null(ops, sb_post_addmount);
        set_to_dummy_if_null(ops, sb_pivotroot);
        set_to_dummy_if_null(ops, sb_post_pivotroot);
-       set_to_dummy_if_null(ops, sb_get_mnt_opts);
        set_to_dummy_if_null(ops, sb_set_mnt_opts);
        set_to_dummy_if_null(ops, sb_clone_mnt_opts);
        set_to_dummy_if_null(ops, sb_parse_opts_str);