Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6.git] / security / root_plug.c
index 38dd4f3..40fb4f1 100644 (file)
  *     License.
  */
 
-#include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/security.h>
 #include <linux/usb.h>
-
-/* flag to keep track of how we were registered */
-static int secondary;
+#include <linux/moduleparam.h>
 
 /* default is a generic type of usb to serial converter */
 static int vendor_id = 0x0557;
 static int product_id = 0x2008;
 
 module_param(vendor_id, uint, 0400);
-MODULE_PARM_DESC(vendor_id, "USB Vendor ID of device to look for");
-
 module_param(product_id, uint, 0400);
-MODULE_PARM_DESC(product_id, "USB Product ID of device to look for");
 
 /* should we print out debug messages */
 static int debug = 0;
 
 module_param(debug, bool, 0600);
-MODULE_PARM_DESC(debug, "Debug enabled or not");
 
-#if defined(CONFIG_SECURITY_ROOTPLUG_MODULE)
-#define MY_NAME THIS_MODULE->name
-#else
 #define MY_NAME "root_plug"
-#endif
 
 #define root_dbg(fmt, arg...)                                  \
        do {                                                    \
                if (debug)                                      \
                        printk(KERN_DEBUG "%s: %s: " fmt ,      \
-                               MY_NAME , __FUNCTION__ ,        \
+                               MY_NAME , __func__ ,    \
                                ## arg);                        \
        } while (0)
 
@@ -66,9 +55,9 @@ static int rootplug_bprm_check_security (struct linux_binprm *bprm)
        struct usb_device *dev;
 
        root_dbg("file %s, e_uid = %d, e_gid = %d\n",
-                bprm->filename, bprm->e_uid, bprm->e_gid);
+                bprm->filename, bprm->cred->euid, bprm->cred->egid);
 
-       if (bprm->e_gid == 0) {
+       if (bprm->cred->egid == 0) {
                dev = usb_find_device(vendor_id, product_id);
                if (!dev) {
                        root_dbg("e_gid = 0, and device not found, "
@@ -83,17 +72,16 @@ static int rootplug_bprm_check_security (struct linux_binprm *bprm)
 
 static struct security_operations rootplug_security_ops = {
        /* Use the capability functions for some of the hooks */
-       .ptrace =                       cap_ptrace,
+       .ptrace_may_access =            cap_ptrace_may_access,
+       .ptrace_traceme =               cap_ptrace_traceme,
        .capget =                       cap_capget,
-       .capset_check =                 cap_capset_check,
-       .capset_set =                   cap_capset_set,
+       .capset =                       cap_capset,
        .capable =                      cap_capable,
 
-       .bprm_apply_creds =             cap_bprm_apply_creds,
-       .bprm_set_security =            cap_bprm_set_security,
+       .bprm_set_creds =               cap_bprm_set_creds,
 
-       .task_post_setuid =             cap_task_post_setuid,
-       .task_reparent_to_init =        cap_task_reparent_to_init,
+       .task_fix_setuid =              cap_task_fix_setuid,
+       .task_prctl =                   cap_task_prctl,
 
        .bprm_check_security =          rootplug_bprm_check_security,
 };
@@ -104,38 +92,11 @@ static int __init rootplug_init (void)
        if (register_security (&rootplug_security_ops)) {
                printk (KERN_INFO 
                        "Failure registering Root Plug module with the kernel\n");
-               /* try registering with primary module */
-               if (mod_reg_security (MY_NAME, &rootplug_security_ops)) {
-                       printk (KERN_INFO "Failure registering Root Plug "
-                               " module with primary security module.\n");
                        return -EINVAL;
-               }
-               secondary = 1;
        }
        printk (KERN_INFO "Root Plug module initialized, "
                "vendor_id = %4.4x, product id = %4.4x\n", vendor_id, product_id);
        return 0;
 }
 
-static void __exit rootplug_exit (void)
-{
-       /* remove ourselves from the security framework */
-       if (secondary) {
-               if (mod_unreg_security (MY_NAME, &rootplug_security_ops))
-                       printk (KERN_INFO "Failure unregistering Root Plug "
-                               " module with primary module.\n");
-       } else { 
-               if (unregister_security (&rootplug_security_ops)) {
-                       printk (KERN_INFO "Failure unregistering Root Plug "
-                               "module with the kernel\n");
-               }
-       }
-       printk (KERN_INFO "Root Plug module removed\n");
-}
-
 security_initcall (rootplug_init);
-module_exit (rootplug_exit);
-
-MODULE_DESCRIPTION("Root Plug sample LSM module, written for Linux Journal article");
-MODULE_LICENSE("GPL");
-