Commit a007c4c3e943ecc054a806c259d95420a188754b
1 parent
a6d88f293e
Exists in
master
and in
20 other branches
nfsd: add get_uint for u32's
I don't think there's a practical difference for the range of values these interfaces should see, but it would be safer to be unambiguous. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Showing 2 changed files with 19 additions and 3 deletions Side-by-side Diff
fs/nfsd/export.c
... | ... | @@ -398,7 +398,7 @@ |
398 | 398 | int migrated, i, err; |
399 | 399 | |
400 | 400 | /* listsize */ |
401 | - err = get_int(mesg, &fsloc->locations_count); | |
401 | + err = get_uint(mesg, &fsloc->locations_count); | |
402 | 402 | if (err) |
403 | 403 | return err; |
404 | 404 | if (fsloc->locations_count > MAX_FS_LOCATIONS) |
... | ... | @@ -456,7 +456,7 @@ |
456 | 456 | return -EINVAL; |
457 | 457 | |
458 | 458 | for (f = exp->ex_flavors; f < exp->ex_flavors + listsize; f++) { |
459 | - err = get_int(mesg, &f->pseudoflavor); | |
459 | + err = get_uint(mesg, &f->pseudoflavor); | |
460 | 460 | if (err) |
461 | 461 | return err; |
462 | 462 | /* |
... | ... | @@ -465,7 +465,7 @@ |
465 | 465 | * problem at export time instead of when a client fails |
466 | 466 | * to authenticate. |
467 | 467 | */ |
468 | - err = get_int(mesg, &f->flags); | |
468 | + err = get_uint(mesg, &f->flags); | |
469 | 469 | if (err) |
470 | 470 | return err; |
471 | 471 | /* Only some flags are allowed to differ between flavors: */ |
include/linux/sunrpc/cache.h
... | ... | @@ -230,6 +230,22 @@ |
230 | 230 | return 0; |
231 | 231 | } |
232 | 232 | |
233 | +static inline int get_uint(char **bpp, unsigned int *anint) | |
234 | +{ | |
235 | + char buf[50]; | |
236 | + int len = qword_get(bpp, buf, sizeof(buf)); | |
237 | + | |
238 | + if (len < 0) | |
239 | + return -EINVAL; | |
240 | + if (len == 0) | |
241 | + return -ENOENT; | |
242 | + | |
243 | + if (kstrtouint(buf, 0, anint)) | |
244 | + return -EINVAL; | |
245 | + | |
246 | + return 0; | |
247 | +} | |
248 | + | |
233 | 249 | /* |
234 | 250 | * timestamps kept in the cache are expressed in seconds |
235 | 251 | * since boot. This is the best for measuring differences in |