From: Sapan Bhatia Date: Mon, 22 Apr 2013 09:23:07 +0000 (-0400) Subject: Cleaned up code, consolidated checks, and marked the site responsible for the f18 bug X-Git-Tag: procprotect-0.3-2~1 X-Git-Url: http://git.onelab.eu/?p=procprotect.git;a=commitdiff_plain;h=e86258a533beb4e2d7e7d0372a1048e88b611a06 Cleaned up code, consolidated checks, and marked the site responsible for the f18 bug --- diff --git a/procprotect.c b/procprotect.c index cc5c117..4763e17 100644 --- a/procprotect.c +++ b/procprotect.c @@ -162,40 +162,17 @@ static int lookup_slow_ret(struct kretprobe_instance *ri, struct pt_regs *regs) struct procprotect_ctx *ctx; int ret; - if (!ri) {printk(KERN_CRIT "ri is 0x0");/* Race condition?*/ return 0;} + if (!ri || !ri->data) {return 0;} ctx = (struct procprotect_ctx *) ri->data; - if (!regs) { - if (!print_once++) { - printk(KERN_CRIT "Regs is 0x0"); - } - return 0; - } - ret = regs->ax; if (ret==0) { struct path *p = ctx->path; - if (!p) { - if (!print_once++) { - printk(KERN_CRIT "P is 0x0"); - } + if (!p || !p->dentry || !p->dentry->d_inode /* This last check was responsible for the f18 bug*/) { return 0; } - if (!p->dentry) { - if (!print_once++) { - printk(KERN_CRIT "P->dentry is 0x0"); - } - return 0; - } - struct inode *inode = p->dentry->d_inode; - if (!inode) { - if (!print_once++) { - printk(KERN_CRIT "inode is 0x0"); - } - return 0; - } if (!run_acl(inode->i_ino)) { regs->ax = -EPERM; }