diff options
authorShehjar Tikoo <>2009-07-23 16:19:26 +0000
committerAnand V. Avati <>2009-07-23 15:20:16 -0700
commitbea6b86ef6defba89274ef85667c56cb52c17d7b (patch)
parentc2733b13aaa6d38eb165e770a936f8bfc19bc685 (diff)
libglusterfsclient: Avoid overwrite of inode found through ino number
In libgf_client_loc_fill, there is a possibility that all the ino, par and name are specified as non-NULL,non-zero args. So if an inode is located in the itable using the ino and the subsequent search for the inode using the par-ino and the file name does not result in an inode being found, the current code over-writes the inode that was found through the ino. The correct behaviour is to stop further searches if inode was already found using ino. Signed-off-by: Anand V. Avati <> BUG: 161 (unfs3 crashes on link system call by fileop) URL:
1 files changed, 8 insertions, 3 deletions
diff --git a/libglusterfsclient/src/libglusterfsclient.c b/libglusterfsclient/src/libglusterfsclient.c
index abdc756a42f..705373f70a3 100755
--- a/libglusterfsclient/src/libglusterfsclient.c
+++ b/libglusterfsclient/src/libglusterfsclient.c
@@ -841,14 +841,19 @@ libgf_client_loc_fill (loc_t *loc,
if (!inode) {
if (ino)
inode = inode_search (ctx->itable, ino, NULL);
+ if (inode)
+ goto inode_found;
if (par && name)
inode = inode_search (ctx->itable, par, name);
- loc->inode = inode;
- if (inode)
+ if (inode) {
loc->ino = inode->ino;
+ loc->inode = inode;
+ }
parent = loc->parent;
if (!parent) {