Extra checks
Sapan Bhatia [Fri, 23 Aug 2013 19:43:03 +0000 (15:43 -0400)]
procprotect.c

index f8ab6e6..741a799 100644 (file)
@@ -91,8 +91,14 @@ static int lookup_fast_entry(struct kretprobe_instance *ri, struct pt_regs *regs
     int ret = -1;
     struct procprotect_ctx *ctx;
     struct nameidata *nd = (struct nameidata *) regs->di;
-    struct dentry *parent = nd->path.dentry;
-    struct inode *pinode = parent->d_inode;
+    struct dentry *parent;
+    struct inode *pinode;
+       
+       if (!nd) return;
+       parent = nd->path.dentry;
+
+       if (!parent) return;
+       pinode = parent->d_inode;
 
     if (pinode->i_sb->s_magic == PROC_SUPER_MAGIC
             && current->nsproxy->mnt_ns!=init_task.nsproxy->mnt_ns) {  
@@ -132,9 +138,13 @@ static int lookup_slow_entry(struct kretprobe_instance *ri, struct pt_regs *regs
     struct procprotect_ctx *ctx;
     struct nameidata *nd = (struct nameidata *) regs->di;
     struct path *p = (struct path *) regs->si;
+    struct dentry *parent;
+       struct inode *pinode;
 
-    struct dentry *parent = nd->path.dentry;
-    struct inode *pinode = parent->d_inode;
+       if (!nd) return;
+       parent = nd->path.dentry;
+    if (!parent) return;
+       pinode= parent->d_inode;
 
     if (pinode->i_sb->s_magic == PROC_SUPER_MAGIC
             && current->nsproxy->mnt_ns!=init_task.nsproxy->mnt_ns) {