git://git.onelab.eu
/
procprotect.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c40c7bb
)
Cleaned up code, consolidated checks, and marked the site responsible for the f18 bug
author
Sapan Bhatia
<gwsapan@gmail.com>
Mon, 22 Apr 2013 09:23:07 +0000
(
05:23
-0400)
committer
Sapan Bhatia
<gwsapan@gmail.com>
Mon, 22 Apr 2013 09:23:07 +0000
(
05:23
-0400)
procprotect.c
patch
|
blob
|
history
diff --git
a/procprotect.c
b/procprotect.c
index
cc5c117
..
4763e17
100644
(file)
--- 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;
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;
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;
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;
}
return 0;
}
- if (!p->dentry) {
- if (!print_once++) {
- printk(KERN_CRIT "P->dentry is 0x0");
- }
- return 0;
- }
-
struct inode *inode = p->dentry->d_inode;
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;
}
if (!run_acl(inode->i_ino)) {
regs->ax = -EPERM;
}