summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Van Hensbergen <ericvh@opteron.homeip.net>2008-02-07 04:25:08 +0300
committerEric Van Hensbergen <ericvh@opteron.homeip.net>2008-02-07 04:25:08 +0300
commitc55703d807a8c6c239a5fea7b9cd7da08c27d7a9 (patch)
treed0dc2da7b6ef0600eb3a626eee1f4717da20763f
parente2735b7720320b68590ca2b32b78ca91213931b2 (diff)
downloadlinux-c55703d807a8c6c239a5fea7b9cd7da08c27d7a9.tar.xz
9p: fix bug in attach-per-user
When a new user attached at a directory other than the root, he would end up in the parent directory of the cwd. This was due to a logic error in the code which attaches the user at the mount point and walks back to the cwd. This patch fixes that. Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
-rw-r--r--fs/9p/fid.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/9p/fid.c b/fs/9p/fid.c
index b364da70ff28..dfebdbe7440e 100644
--- a/fs/9p/fid.c
+++ b/fs/9p/fid.c
@@ -175,7 +175,7 @@ struct p9_fid *v9fs_fid_lookup(struct dentry *dentry)
if (!wnames)
return ERR_PTR(-ENOMEM);
- for (d = dentry, i = n; i >= 0; i--, d = d->d_parent)
+ for (d = dentry, i = (n-1); i >= 0; i--, d = d->d_parent)
wnames[i] = (char *) d->d_name.name;
clone = 1;
@@ -183,7 +183,7 @@ struct p9_fid *v9fs_fid_lookup(struct dentry *dentry)
while (i < n) {
l = min(n - i, P9_MAXWELEM);
fid = p9_client_walk(fid, l, &wnames[i], clone);
- if (!fid) {
+ if (IS_ERR(fid)) {
kfree(wnames);
return fid;
}