From: Greg Kroah-Hartman Date: Thu, 15 Aug 2024 12:40:22 +0000 (+0200) Subject: 6.1-stable patches X-Git-Tag: v4.19.320~24 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e1564344ce91add8eee38d33d9608cd53c1d1f07;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: cgroup-move-rcu_head-up-near-the-top-of-cgroup_root.patch --- diff --git a/queue-6.1/cgroup-move-rcu_head-up-near-the-top-of-cgroup_root.patch b/queue-6.1/cgroup-move-rcu_head-up-near-the-top-of-cgroup_root.patch new file mode 100644 index 00000000000..bf30189a3c1 --- /dev/null +++ b/queue-6.1/cgroup-move-rcu_head-up-near-the-top-of-cgroup_root.patch @@ -0,0 +1,66 @@ +From a7fb0423c201ba12815877a0b5a68a6a1710b23a Mon Sep 17 00:00:00 2001 +From: Waiman Long +Date: Thu, 7 Dec 2023 08:46:14 -0500 +Subject: cgroup: Move rcu_head up near the top of cgroup_root +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Waiman Long + +commit a7fb0423c201ba12815877a0b5a68a6a1710b23a upstream. + +Commit d23b5c577715 ("cgroup: Make operations on the cgroup root_list RCU +safe") adds a new rcu_head to the cgroup_root structure and kvfree_rcu() +for freeing the cgroup_root. + +The current implementation of kvfree_rcu(), however, has the limitation +that the offset of the rcu_head structure within the larger data +structure must be less than 4096 or the compilation will fail. See the +macro definition of __is_kvfree_rcu_offset() in include/linux/rcupdate.h +for more information. + +By putting rcu_head below the large cgroup structure, any change to the +cgroup structure that makes it larger run the risk of causing build +failure under certain configurations. Commit 77070eeb8821 ("cgroup: +Avoid false cacheline sharing of read mostly rstat_cpu") happens to be +the last straw that breaks it. Fix this problem by moving the rcu_head +structure up before the cgroup structure. + +Fixes: d23b5c577715 ("cgroup: Make operations on the cgroup root_list RCU safe") +Reported-by: Stephen Rothwell +Closes: https://lore.kernel.org/lkml/20231207143806.114e0a74@canb.auug.org.au/ +Signed-off-by: Waiman Long +Acked-by: Yafang Shao +Reviewed-by: Yosry Ahmed +Reviewed-by: Michal Koutný +Signed-off-by: Tejun Heo +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/cgroup-defs.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/include/linux/cgroup-defs.h ++++ b/include/linux/cgroup-defs.h +@@ -525,6 +525,10 @@ struct cgroup_root { + /* Unique id for this hierarchy. */ + int hierarchy_id; + ++ /* A list running through the active hierarchies */ ++ struct list_head root_list; ++ struct rcu_head rcu; /* Must be near the top */ ++ + /* + * The root cgroup. The containing cgroup_root will be destroyed on its + * release. cgrp->ancestors[0] will be used overflowing into the +@@ -538,10 +542,6 @@ struct cgroup_root { + /* Number of cgroups in the hierarchy, used only for /proc/cgroups */ + atomic_t nr_cgrps; + +- /* A list running through the active hierarchies */ +- struct list_head root_list; +- struct rcu_head rcu; +- + /* Hierarchy-specific flags */ + unsigned int flags; + diff --git a/queue-6.1/series b/queue-6.1/series index e14e8ccf8d8..03402232746 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -33,3 +33,4 @@ drm-i915-add-a-function-to-mmap-framebuffer-obj.patch drm-i915-fix-a-null-vs-is_err-bug.patch drm-i915-gem-adjust-vma-offset-for-framebuffer-mmap-.patch binfmt_flat-fix-corruption-when-not-offsetting-data-.patch +cgroup-move-rcu_head-up-near-the-top-of-cgroup_root.patch