Commit a007c4c3e943ecc054a806c259d95420a188754b

Authored by J. Bruce Fields
1 parent a6d88f293e

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

... ... @@ -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