X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=fs%2Fnfsd%2Fexport.c;h=7ce2c6e4e23ee11c5b2cfc0a2b056dbf6d57e6a1;hb=6dfcde98a299196f13dd66417663a819f0ac4156;hp=9dc036f1835614e3c2505abad50496071cf8b0b2;hpb=45edb89ffd6386f95a7a9e1e5461b0e61c76aa14;p=firefly-linux-kernel-4.4.55.git 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) /* now we want a pathname, or empty meaning NEGATIVE */ err = -EINVAL; - if ((len=qword_get(&mesg, buf, PAGE_SIZE)) < 0) + if ((len=qword_get(&mesg, buf, PAGE_SIZE)) < 0) { + cache_put(&ek->h, &svc_expkey_cache); goto out; + } dprintk("Path seems to be <%s>\n", buf); err = 0; if (len == 0) { @@ -164,8 +166,10 @@ static int expkey_parse(struct cache_detail *cd, char *mesg, int mlen) } else { struct nameidata nd; err = path_lookup(buf, 0, &nd); - if (err) + if (err) { + cache_put(&ek->h, &svc_expkey_cache); goto out; + } dprintk("Found the path %s\n", buf); key.ek_path = nd.path;