From: Greg Kroah-Hartman Date: Tue, 6 Nov 2012 10:00:37 +0000 (+0100) Subject: 3.0-stable patches X-Git-Tag: v3.0.52~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fb766d12d582972dc54244c0995c8cdf9268cafe;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: nfsd-add-get_uint-for-u32-s.patch --- diff --git a/queue-3.0/nfsd-add-get_uint-for-u32-s.patch b/queue-3.0/nfsd-add-get_uint-for-u32-s.patch new file mode 100644 index 00000000000..f4f6fb95b20 --- /dev/null +++ b/queue-3.0/nfsd-add-get_uint-for-u32-s.patch @@ -0,0 +1,75 @@ +From a007c4c3e943ecc054a806c259d95420a188754b Mon Sep 17 00:00:00 2001 +From: "J. Bruce Fields" +Date: Tue, 12 Jun 2012 16:54:16 -0400 +Subject: nfsd: add get_uint for u32's + +From: "J. Bruce Fields" + +commit a007c4c3e943ecc054a806c259d95420a188754b upstream. + +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 +Cc: Sasha Levin +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nfsd/export.c | 6 +++--- + include/linux/sunrpc/cache.h | 16 ++++++++++++++++ + 2 files changed, 19 insertions(+), 3 deletions(-) + +--- a/fs/nfsd/export.c ++++ b/fs/nfsd/export.c +@@ -403,7 +403,7 @@ fsloc_parse(char **mesg, char *buf, stru + int migrated, i, err; + + /* listsize */ +- err = get_int(mesg, &fsloc->locations_count); ++ err = get_uint(mesg, &fsloc->locations_count); + if (err) + return err; + if (fsloc->locations_count > MAX_FS_LOCATIONS) +@@ -461,7 +461,7 @@ static int secinfo_parse(char **mesg, ch + return -EINVAL; + + for (f = exp->ex_flavors; f < exp->ex_flavors + listsize; f++) { +- err = get_int(mesg, &f->pseudoflavor); ++ err = get_uint(mesg, &f->pseudoflavor); + if (err) + return err; + /* +@@ -470,7 +470,7 @@ static int secinfo_parse(char **mesg, ch + * problem at export time instead of when a client fails + * to authenticate. + */ +- err = get_int(mesg, &f->flags); ++ err = get_uint(mesg, &f->flags); + if (err) + return err; + /* Only some flags are allowed to differ between flavors: */ +--- a/include/linux/sunrpc/cache.h ++++ b/include/linux/sunrpc/cache.h +@@ -224,6 +224,22 @@ static inline int get_int(char **bpp, in + return 0; + } + ++static inline int get_uint(char **bpp, unsigned int *anint) ++{ ++ char buf[50]; ++ int len = qword_get(bpp, buf, sizeof(buf)); ++ ++ if (len < 0) ++ return -EINVAL; ++ if (len == 0) ++ return -ENOENT; ++ ++ if (kstrtouint(buf, 0, anint)) ++ return -EINVAL; ++ ++ return 0; ++} ++ + /* + * timestamps kept in the cache are expressed in seconds + * since boot. This is the best for measuring differences in diff --git a/queue-3.0/series b/queue-3.0/series index f7ce6de7154..93a84fc30b8 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -10,5 +10,6 @@ mac80211-fix-ssid-copy-on-ibss-join.patch nfsv3-make-v3-mounts-fail-with-etimedouts-instead-eio-on-mountd-timeouts.patch nfs-show-original-device-name-verbatim-in-proc-mount-s-info.patch nfsv4-nfs4_locku_done-must-release-the-sequence-id.patch +nfsd-add-get_uint-for-u32-s.patch nfs-fix-bug-in-legacy-dns-resolver.patch nfs-fix-oopses-in-nfs_lookup_revalidate-and-nfs4_lookup_revalidate.patch