aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrishna Kumar <krkumar2@in.ibm.com>2008-10-20 02:14:40 -0400
committerJ. Bruce Fields <bfields@citi.umich.edu>2008-10-22 14:04:34 -0400
commit6dfcde98a299196f13dd66417663a819f0ac4156 (patch)
tree78c2d21004ec9216784d264bdcc7b8b2692660f8
parent6c6a426fdcb374b7641d7cf9eea88410828b9d9a (diff)
nfsd: Drop reference in expkey_parse error cases
Drop reference to export key on error. Compile tested. Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
-rw-r--r--fs/nfsd/export.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index 9dc036f18356..7ce2c6e4e23e 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -151,8 +151,10 @@ static int expkey_parse(struct cache_detail *cd, char *mesg, int mlen)
151 151
152 /* now we want a pathname, or empty meaning NEGATIVE */ 152 /* now we want a pathname, or empty meaning NEGATIVE */
153 err = -EINVAL; 153 err = -EINVAL;
154 if ((len=qword_get(&mesg, buf, PAGE_SIZE)) < 0) 154 if ((len=qword_get(&mesg, buf, PAGE_SIZE)) < 0) {
155 cache_put(&ek->h, &svc_expkey_cache);
155 goto out; 156 goto out;
157 }
156 dprintk("Path seems to be <%s>\n", buf); 158 dprintk("Path seems to be <%s>\n", buf);
157 err = 0; 159 err = 0;
158 if (len == 0) { 160 if (len == 0) {
@@ -164,8 +166,10 @@ static int expkey_parse(struct cache_detail *cd, char *mesg, int mlen)
164 } else { 166 } else {
165 struct nameidata nd; 167 struct nameidata nd;
166 err = path_lookup(buf, 0, &nd); 168 err = path_lookup(buf, 0, &nd);
167 if (err) 169 if (err) {
170 cache_put(&ek->h, &svc_expkey_cache);
168 goto out; 171 goto out;
172 }
169 173
170 dprintk("Found the path %s\n", buf); 174 dprintk("Found the path %s\n", buf);
171 key.ek_path = nd.path; 175 key.ek_path = nd.path;