diff options
author | Suzuki <suzuki@In.ibm.com> | 2006-02-07 21:58:36 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-08 01:12:32 +0100 |
commit | 3bc8414b079ec372485c99ed1f33c6c42ca9d756 (patch) | |
tree | bdb939f8ef5ad746ac61948c8476683c9e83334f /fs/namei.c | |
parent | [PATCH] __cmpxchg() must really always be inlined on alpha (diff) | |
download | linux-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>
Diffstat (limited to 'fs/namei.c')
-rw-r--r-- | fs/namei.c | 6 |
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: |