From 317d1f3988aec9aa8202b9592a2d8e300b95e9c6 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sat, 13 Jan 2007 02:28:11 -0500 Subject: [PATCH] --- yaml --- r: 46076 b: refs/heads/master c: faebf4e2bb0efad9dda396ea13d5c6ad15d7d7fb h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/nfs/getroot.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 041ed597a1ec..8548029a424f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c79ba787c11e767ffaf8d723923afda99ba6c63c +refs/heads/master: faebf4e2bb0efad9dda396ea13d5c6ad15d7d7fb diff --git a/trunk/fs/nfs/getroot.c b/trunk/fs/nfs/getroot.c index 8391bd7a83ce..6ef268f7c300 100644 --- a/trunk/fs/nfs/getroot.c +++ b/trunk/fs/nfs/getroot.c @@ -135,17 +135,15 @@ int nfs4_path_walk(struct nfs_server *server, struct nfs_fh lastfh; struct qstr name; int ret; - //int referral_count = 0; dprintk("--> nfs4_path_walk(,,%s)\n", path); fsinfo.fattr = &fattr; nfs_fattr_init(&fattr); - if (*path++ != '/') { - dprintk("nfs4_get_root: Path does not begin with a slash\n"); - return -EINVAL; - } + /* Eat leading slashes */ + while (*path == '/') + path++; /* Start by getting the root filehandle from the server */ ret = server->nfs_client->rpc_ops->getroot(server, mntfh, &fsinfo); @@ -160,6 +158,7 @@ int nfs4_path_walk(struct nfs_server *server, return -ENOTDIR; } + /* FIXME: It is quite valid for the server to return a referral here */ if (fattr.valid & NFS_ATTR_FATTR_V4_REFERRAL) { printk(KERN_ERR "nfs4_get_root:" " getroot obtained referral\n"); @@ -187,6 +186,7 @@ int nfs4_path_walk(struct nfs_server *server, goto eat_dot_dir; } + /* FIXME: Why shouldn't the user be able to use ".." in the path? */ if (path[0] == '.' && path[1] == '.' && (path[2] == '/' || !path[2]) ) { printk(KERN_ERR "nfs4_get_root:" @@ -212,6 +212,7 @@ int nfs4_path_walk(struct nfs_server *server, return -ENOTDIR; } + /* FIXME: Referrals are quite valid here too */ if (fattr.valid & NFS_ATTR_FATTR_V4_REFERRAL) { printk(KERN_ERR "nfs4_get_root:" " lookupfh obtained referral\n");