From: Greg Kroah-Hartman Date: Mon, 29 Jan 2018 13:53:59 +0000 (+0100) Subject: 4.4-stable patches X-Git-Tag: v4.4.114~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=490827f5104bee75067a323687b8bf32235b6ba0;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: nfsd-auth-fix-gid-sorting-when-rootsquash-enabled.patch --- diff --git a/queue-4.4/nfsd-auth-fix-gid-sorting-when-rootsquash-enabled.patch b/queue-4.4/nfsd-auth-fix-gid-sorting-when-rootsquash-enabled.patch new file mode 100644 index 00000000000..320e6950865 --- /dev/null +++ b/queue-4.4/nfsd-auth-fix-gid-sorting-when-rootsquash-enabled.patch @@ -0,0 +1,46 @@ +From 1995266727fa8143897e89b55f5d3c79aa828420 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Mon, 22 Jan 2018 20:11:06 +0000 +Subject: nfsd: auth: Fix gid sorting when rootsquash enabled + +From: Ben Hutchings + +commit 1995266727fa8143897e89b55f5d3c79aa828420 upstream. + +Commit bdcf0a423ea1 ("kernel: make groups_sort calling a responsibility +group_info allocators") appears to break nfsd rootsquash in a pretty +major way. + +It adds a call to groups_sort() inside the loop that copies/squashes +gids, which means the valid gids are sorted along with the following +garbage. The net result is that the highest numbered valid gids are +replaced with any lower-valued garbage gids, possibly including 0. + +We should sort only once, after filling in all the gids. + +Fixes: bdcf0a423ea1 ("kernel: make groups_sort calling a responsibility ...") +Signed-off-by: Ben Hutchings +Acked-by: J. Bruce Fields +Signed-off-by: Linus Torvalds +Cc: Wolfgang Walter +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nfsd/auth.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/fs/nfsd/auth.c ++++ b/fs/nfsd/auth.c +@@ -60,9 +60,10 @@ int nfsd_setuser(struct svc_rqst *rqstp, + else + GROUP_AT(gi, i) = GROUP_AT(rqgi, i); + +- /* Each thread allocates its own gi, no race */ +- groups_sort(gi); + } ++ ++ /* Each thread allocates its own gi, no race */ ++ groups_sort(gi); + } else { + gi = get_group_info(rqgi); + } diff --git a/queue-4.4/series b/queue-4.4/series index 34334d77cf5..eab2d73ec58 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -72,3 +72,4 @@ net-allow-neigh-contructor-functions-ability-to-modify-the-primary_key.patch ipv4-make-neigh-lookup-keys-for-loopback-point-to-point-devices-be-inaddr_any.patch flow_dissector-properly-cap-thoff-field.patch net-tcp-close-sock-if-net-namespace-is-exiting.patch +nfsd-auth-fix-gid-sorting-when-rootsquash-enabled.patch