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 ret;
+ parent = nd->path.dentry;
+
+ if (!parent) return ret;
+ pinode = parent->d_inode;
+
+ if (!pinode || !pinode->i_sb || !current || !current->nsproxy) return ret;
if (pinode->i_sb->s_magic == PROC_SUPER_MAGIC
&& current->nsproxy->mnt_ns!=init_task.nsproxy->mnt_ns) {
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) {
}
}
- if (!once_only) {
- once_only=1;
- if (init_probes()==-1)
- printk(KERN_CRIT "Could not install procprotect probes. Reload module to retry.");
- }
}
pathname[count]='\0';
add_entry(pathname);
+
+ if (!once_only) {
+ once_only=1;
+ if (init_probes()==-1)
+ printk(KERN_CRIT "Could not install procprotect probes. Reload module to retry.");
+ }
printk(KERN_CRIT "Length of buffer=%d",strlen(pathname));
return count;
}