X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=procprotect.c;h=950be09c8fe2a705c27a4a341c9ad1f7fee7f77e;hb=c6f6343ea39d7cf825e4a1459330ef7ee5d4b6be;hp=1ceea461ff81088d9b1d5721e5e9c9d97217584c;hpb=5d8a946ffbc555ecdb555fe16ffc1efa0bb8ff31;p=procprotect.git diff --git a/procprotect.c b/procprotect.c index 1ceea46..950be09 100644 --- a/procprotect.c +++ b/procprotect.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -33,7 +34,12 @@ #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; module_param(aclpath, charp, 0); @@ -151,8 +157,12 @@ static int lookup_slow_entry(struct kretprobe_instance *ri, struct pt_regs *regs static int lookup_slow_ret(struct kretprobe_instance *ri, struct pt_regs *regs) { - struct procprotect_ctx *ctx = (struct procprotect_ctx *) ri->data; - int ret = regs->ax; + struct procprotect_ctx *ctx; + int ret; + + if (!ri) {/* Race condition?*/ return 0;} + ctx = (struct procprotect_ctx *) ri->data; + ret = regs->ax; if (ret==0) { /* The kernel is going to honor the request. Here's where we step in */ @@ -283,11 +293,12 @@ int procfile_write(struct file *file, const char *buffer, unsigned long count, v static int __init procprotect_init(void) { - printk("Procprotect: starting procprotect version %s with ACLs at path %s.\n", - VERSION_STR, aclpath); int ret; int i; + printk("Procprotect: starting procprotect version %s with ACLs at path %s.\n", + VERSION_STR, aclpath); + for(i=0;i