diff options
author | J. Bruce Fields <bfields@redhat.com> | 2012-06-12 16:54:16 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-07-25 09:18:27 -0400 |
commit | a007c4c3e943ecc054a806c259d95420a188754b (patch) | |
tree | 5eb56435a616d0fb31d31a7ce7fe8ff0c241c33d | |
parent | a6d88f293ecd1b7444e128777f4a893e7a998852 (diff) |
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>
-rw-r--r-- | fs/nfsd/export.c | 6 | ||||
-rw-r--r-- | include/linux/sunrpc/cache.h | 16 |
2 files changed, 19 insertions, 3 deletions
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c index ba233499b9a5..1114463bb856 100644 --- a/fs/nfsd/export.c +++ b/fs/nfsd/export.c | |||
@@ -398,7 +398,7 @@ fsloc_parse(char **mesg, char *buf, struct nfsd4_fs_locations *fsloc) | |||
398 | int migrated, i, err; | 398 | int migrated, i, err; |
399 | 399 | ||
400 | /* listsize */ | 400 | /* listsize */ |
401 | err = get_int(mesg, &fsloc->locations_count); | 401 | err = get_uint(mesg, &fsloc->locations_count); |
402 | if (err) | 402 | if (err) |
403 | return err; | 403 | return err; |
404 | if (fsloc->locations_count > MAX_FS_LOCATIONS) | 404 | if (fsloc->locations_count > MAX_FS_LOCATIONS) |
@@ -456,7 +456,7 @@ static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp) | |||
456 | return -EINVAL; | 456 | return -EINVAL; |
457 | 457 | ||
458 | for (f = exp->ex_flavors; f < exp->ex_flavors + listsize; f++) { | 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 | if (err) | 460 | if (err) |
461 | return err; | 461 | return err; |
462 | /* | 462 | /* |
@@ -465,7 +465,7 @@ static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp) | |||
465 | * problem at export time instead of when a client fails | 465 | * problem at export time instead of when a client fails |
466 | * to authenticate. | 466 | * to authenticate. |
467 | */ | 467 | */ |
468 | err = get_int(mesg, &f->flags); | 468 | err = get_uint(mesg, &f->flags); |
469 | if (err) | 469 | if (err) |
470 | return err; | 470 | return err; |
471 | /* Only some flags are allowed to differ between flavors: */ | 471 | /* Only some flags are allowed to differ between flavors: */ |
diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h index af42596a82f9..f792794f6634 100644 --- a/include/linux/sunrpc/cache.h +++ b/include/linux/sunrpc/cache.h | |||
@@ -230,6 +230,22 @@ static inline int get_int(char **bpp, int *anint) | |||
230 | return 0; | 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 | * timestamps kept in the cache are expressed in seconds | 250 | * timestamps kept in the cache are expressed in seconds |
235 | * since boot. This is the best for measuring differences in | 251 | * since boot. This is the best for measuring differences in |