diff options
author | J. Bruce Fields <bfields@citi.umich.edu> | 2007-07-27 16:36:45 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2007-10-09 18:31:56 -0400 |
commit | c9b6cbe56d3ac471e6cd72a59ec9e324b3417016 (patch) | |
tree | 15d77bd55682cb34678eb6f33053efaab1f81cc5 /fs/nfsd/nfs4idmap.c | |
parent | 2fdada03b3876ab9f84ede160f187e888cafefb4 (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.c | 8 |
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) { |