summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuzuki <suzuki@In.ibm.com>2006-02-07 21:58:36 +0100
committerLinus Torvalds <torvalds@g5.osdl.org>2006-02-08 01:12:32 +0100
commit3bc8414b079ec372485c99ed1f33c6c42ca9d756 (patch)
treebdb939f8ef5ad746ac61948c8476683c9e83334f
parent[PATCH] __cmpxchg() must really always be inlined on alpha (diff)
downloadlinux-3bc8414b079ec372485c99ed1f33c6c42ca9d756.tar.xz
linux-3bc8414b079ec372485c99ed1f33c6c42ca9d756.zip
[PATCH] Fix do_path_lookup() to add the check for error in link_path_walk()
Fix do_path_lookup() to avoid accessing invalid dentry or inode when the link_path_walk() has failed. This should fix Bugme #5897. Signed-off-by: Suzuki K P <suzuki@in.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/namei.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/namei.c b/fs/namei.c
index faf61c35308c..e28de846c591 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1119,9 +1119,11 @@ static int fastcall do_path_lookup(int dfd, const char *name,
current->total_link_count = 0;
retval = link_path_walk(name, nd);
out:
- if (unlikely(current->audit_context
- && nd && nd->dentry && nd->dentry->d_inode))
+ if (likely(retval == 0)) {
+ if (unlikely(current->audit_context && nd && nd->dentry &&
+ nd->dentry->d_inode))
audit_inode(name, nd->dentry->d_inode, flags);
+ }
return retval;
fput_unlock_fail: