aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4idmap.c
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@citi.umich.edu>2007-07-27 16:36:45 -0400
committerJ. Bruce Fields <bfields@citi.umich.edu>2007-10-09 18:31:56 -0400
commitc9b6cbe56d3ac471e6cd72a59ec9e324b3417016 (patch)
tree15d77bd55682cb34678eb6f33053efaab1f81cc5 /fs/nfsd/nfs4idmap.c
parent2fdada03b3876ab9f84ede160f187e888cafefb4 (diff)
knfsd: nfs4 name->id mapping not correctly parsing negative downcall
Note that qword_get() returns length or -1, not an -ERROR. Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu> Acked-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'fs/nfsd/nfs4idmap.c')
-rw-r--r--fs/nfsd/nfs4idmap.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/nfsd/nfs4idmap.c b/fs/nfsd/nfs4idmap.c
index 2ccffde81b84..4c0c683ce07a 100644
--- a/fs/nfsd/nfs4idmap.c
+++ b/fs/nfsd/nfs4idmap.c
@@ -207,6 +207,7 @@ idtoname_parse(struct cache_detail *cd, char *buf, int buflen)
207{ 207{
208 struct ent ent, *res; 208 struct ent ent, *res;
209 char *buf1, *bp; 209 char *buf1, *bp;
210 int len;
210 int error = -EINVAL; 211 int error = -EINVAL;
211 212
212 if (buf[buflen - 1] != '\n') 213 if (buf[buflen - 1] != '\n')
@@ -248,10 +249,11 @@ idtoname_parse(struct cache_detail *cd, char *buf, int buflen)
248 goto out; 249 goto out;
249 250
250 /* Name */ 251 /* Name */
251 error = qword_get(&buf, buf1, PAGE_SIZE); 252 error = -EINVAL;
252 if (error == -EINVAL) 253 len = qword_get(&buf, buf1, PAGE_SIZE);
254 if (len < 0)
253 goto out; 255 goto out;
254 if (error == -ENOENT) 256 if (len == 0)
255 set_bit(CACHE_NEGATIVE, &ent.h.flags); 257 set_bit(CACHE_NEGATIVE, &ent.h.flags);
256 else { 258 else {
257 if (error >= IDMAP_NAMESZ) { 259 if (error >= IDMAP_NAMESZ) {