From 2d7d2181227e40d87201253407c790f479b1307e Mon Sep 17 00:00:00 2001 From: Andy Adamson Date: Fri, 9 Jun 2006 09:34:30 -0400 Subject: [PATCH] --- yaml --- r: 30111 b: refs/heads/master c: 33a43f2802d8d7be3a9b541785c4ca9ad79e4310 h: refs/heads/master i: 30109: 893c3ee9757d668731a5d29191f476d33e3c8dba 30107: 93eabe414eba55632e2a9075cdf310acca36905f 30103: 0ba6c37d065448e525099d7eb312a82d7b978cc9 30095: 4eabe5279378238f825e403d1acf45109c5696d2 30079: 57eca055c8d2fcaee9323e64507cc4273d505b43 v: v3 --- [refs] | 2 +- trunk/fs/nfs/nfs4xdr.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index d5ec85ac582c..577d77add90d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6b97fd3da1eab2cc490cfe884c7d4956522eaf8b +refs/heads/master: 33a43f2802d8d7be3a9b541785c4ca9ad79e4310 diff --git a/trunk/fs/nfs/nfs4xdr.c b/trunk/fs/nfs/nfs4xdr.c index 646f16da0722..1750d996f49f 100644 --- a/trunk/fs/nfs/nfs4xdr.c +++ b/trunk/fs/nfs/nfs4xdr.c @@ -2408,8 +2408,10 @@ static int decode_pathname(struct xdr_stream *xdr, struct nfs4_pathname *path) READ_BUF(4); READ32(n); - if (n <= 0) + if (n < 0) goto out_eio; + if (n == 0) + goto root_path; dprintk("path "); path->ncomponents = 0; while (path->ncomponents < n) { @@ -2430,6 +2432,13 @@ static int decode_pathname(struct xdr_stream *xdr, struct nfs4_pathname *path) out: dprintk("\n"); return status; +root_path: +/* a root pathname is sent as a zero component4 */ + path->ncomponents = 1; + path->components[0].len=0; + path->components[0].data=NULL; + dprintk("path /\n"); + goto out; out_eio: dprintk(" status %d", status); status = -EIO;