From 548b71076ca6ced916844ea774887c0a6aedda6f Mon Sep 17 00:00:00 2001 From: Camille Oudot Date: Thu, 3 Dec 2015 16:18:52 +0100 Subject: [PATCH] disable procfs uid/gid for kernels prior to 3.10 --- kernel-module/xt_RTPENGINE.c | 38 +++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/kernel-module/xt_RTPENGINE.c b/kernel-module/xt_RTPENGINE.c index 67adfc9e6..7fffaf11f 100644 --- a/kernel-module/xt_RTPENGINE.c +++ b/kernel-module/xt_RTPENGINE.c @@ -81,7 +81,7 @@ struct re_cipher; struct rtp_parsed; struct re_crypto_context; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) kuid_t proc_kuid; uint proc_uid = 0; module_param(proc_uid, uint, 0); @@ -92,7 +92,7 @@ kgid_t proc_kgid; uint proc_gid = 0; module_param(proc_gid, uint, 0); MODULE_PARM_DESC(proc_gid, "rtpengine procfs tree group id"); - +#endif static struct proc_dir_entry *my_proc_root; static struct proc_dir_entry *proc_list; @@ -416,37 +416,37 @@ static int table_create_proc(struct rtpengine_table *t, u_int32_t id) { #endif if (!t->proc) return -1; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) proc_set_user(t->proc, proc_kuid, proc_kgid); - +#endif t->status = proc_create_data("status", S_IFREG | S_IRUGO, t->proc, &proc_status_ops, (void *) (unsigned long) id); if (!t->status) return -1; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) proc_set_user(t->status, proc_kuid, proc_kgid); - +#endif t->control = proc_create_data("control", S_IFREG | S_IWUSR | S_IWGRP, t->proc, &proc_control_ops, (void *) (unsigned long) id); if (!t->control) return -1; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) proc_set_user(t->control, proc_kuid, proc_kgid); - +#endif t->list = proc_create_data("list", S_IFREG | S_IRUGO, t->proc, &proc_list_ops, (void *) (unsigned long) id); if (!t->list) return -1; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) proc_set_user(t->list, proc_kuid, proc_kgid); - +#endif t->blist = proc_create_data("blist", S_IFREG | S_IRUGO, t->proc, &proc_blist_ops, (void *) (unsigned long) id); if (!t->blist) return -1; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) proc_set_user(t->blist, proc_kuid, proc_kgid); - +#endif return 0; } @@ -2769,10 +2769,11 @@ static int __init init(void) { const char *err; printk(KERN_NOTICE "Registering xt_RTPENGINE module - version %s\n", RTPENGINE_VERSION); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) printk(KERN_DEBUG "using uid %u, gid %d\n", proc_uid, proc_gid); proc_kuid = KUIDT_INIT(proc_uid); proc_kgid = KGIDT_INIT(proc_gid); - +#endif rwlock_init(&table_lock); ret = -ENOMEM; @@ -2780,23 +2781,24 @@ static int __init init(void) { my_proc_root = proc_mkdir("rtpengine", NULL); if (!my_proc_root) goto fail; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) proc_set_user(my_proc_root, proc_kuid, proc_kgid); +#endif /* my_proc_root->owner = THIS_MODULE; */ proc_control = proc_create("control", S_IFREG | S_IWUSR | S_IWGRP, my_proc_root, &proc_main_control_ops); if (!proc_control) goto fail; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) proc_set_user(proc_control, proc_kuid, proc_kgid); - +#endif proc_list = proc_create("list", S_IFREG | S_IRUGO, my_proc_root, &proc_main_list_ops); if (!proc_list) goto fail; - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) proc_set_user(proc_list, proc_kuid, proc_kgid); - +#endif err = "could not register xtables target"; ret = xt_register_targets(xt_rtpengine_regs, ARRAY_SIZE(xt_rtpengine_regs)); if (ret)