X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=procprotect.c;h=e8c639d232ab5174e101bfe5e05df41adee43493;hb=384193ea185181ef94aff22832b878f3bb8fd506;hp=dc2d4e43e8ef3565ff3fb37a1e1fc88bb0efa817;hpb=c4d10fa8ab1fd1a2fc9db070c139f07f836b2e83;p=procprotect.git diff --git a/procprotect.c b/procprotect.c index dc2d4e4..e8c639d 100644 --- a/procprotect.c +++ b/procprotect.c @@ -28,17 +28,19 @@ #include #include +#include +#include +#include /* Specifically, a module */ +#include /* We're doing kernel work */ +#include /* Necessary because we use the proc fs */ + #define VERSION_STR "0.0.1" #ifndef CONFIG_X86_64 #error "This code does not support your architecture" #endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0) static char *aclpath = "procprotect"; -#else -static char *aclpath __devinitdata = "procprotect"; -#endif static struct qstr aclqpath; @@ -69,14 +71,8 @@ struct hlist_head procprotect_hash[HASH_SIZE]; struct proc_dir_entry *proc_entry; static int run_acl(unsigned long ino) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0) - struct hlist_node *n; -#endif struct acl_entry *entry; hlist_for_each_entry_rcu(entry, -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0) - n, -#endif &procprotect_hash[ino & (HASH_SIZE-1)], hlist) { if (entry->ino==ino) { @@ -140,8 +136,6 @@ static int lookup_slow_entry(struct kretprobe_instance *ri, struct pt_regs *regs struct dentry *parent = nd->path.dentry; struct inode *pinode = parent->d_inode; - - if (pinode->i_sb->s_magic == PROC_SUPER_MAGIC && current->nsproxy->mnt_ns!=init_task.nsproxy->mnt_ns) { @@ -256,18 +250,12 @@ static void __exit procprotect_exit(void) { unregister_kretprobe(&fast_probe); unregister_kretprobe(&slow_probe); - unregister_jprobe(&dolast_probe); -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0) - struct hlist_node *n; -#endif + unregister_jprobe(&dolast_probe); struct acl_entry *entry; int i; for (i=0;iwrite_proc = procfile_write; + proc_entry = proc_create("procprotect", 0644, NULL, &procprotect_fops); + add_entry("/proc/sysrq-trigger"); return ret; }