From 088fa28eadf4053d91911ca0d8495baa444d41c8 Mon Sep 17 00:00:00 2001 From: Bart Wensley Date: Mon, 8 Jul 2019 11:43:37 -0500 Subject: [PATCH] Disable CONFIG_MEMCG_KMEM to avoid slab leak The kernel memory accounting in the RHEL kernel is broken and results in a slab memory leak when it is enabled. See the following bug for details: https://bugzilla.redhat.com/show_bug.cgi?id=1507149 Unfortunately, this option is enabled by default, so it must be disabled. Even worse, the kernel won't compile with the option disabled, so a fix for the compile error is also included. Change-Id: I627106ae25f86204c1954c1c21171bbef348afaf Closes-Bug: 1835534 Signed-off-by: Bart Wensley --- kernel/kernel-rt/centos/build_srpm.data | 2 +- .../centos/meta_patches/Compile-issues.patch | 22 ++++++------ ...-fix-for-disabling-CONFIG_MEMCG_KMEM.patch | 35 +++++++++++++++++++ .../kernel-3.10.0-x86_64-rt.config.tis_extra | 3 ++ kernel/kernel-std/centos/build_srpm.data | 2 +- .../centos/meta_patches/Compile-issues.patch | 25 +++++++------ ...-fix-for-disabling-CONFIG_MEMCG_KMEM.patch | 35 +++++++++++++++++++ .../kernel-3.10.0-x86_64.config.tis_extra | 3 ++ 8 files changed, 104 insertions(+), 23 deletions(-) create mode 100644 kernel/kernel-rt/centos/patches/compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch create mode 100644 kernel/kernel-std/centos/patches/compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch diff --git a/kernel/kernel-rt/centos/build_srpm.data b/kernel/kernel-rt/centos/build_srpm.data index c06f85d68..dab446664 100644 --- a/kernel/kernel-rt/centos/build_srpm.data +++ b/kernel/kernel-rt/centos/build_srpm.data @@ -1,4 +1,4 @@ COPY_LIST="files/*" -TIS_PATCH_VER=1 +TIS_PATCH_VER=2 BUILD_IS_BIG=11 BUILD_IS_SLOW=12 diff --git a/kernel/kernel-rt/centos/meta_patches/Compile-issues.patch b/kernel/kernel-rt/centos/meta_patches/Compile-issues.patch index 9cf178368..3b345a861 100644 --- a/kernel/kernel-rt/centos/meta_patches/Compile-issues.patch +++ b/kernel/kernel-rt/centos/meta_patches/Compile-issues.patch @@ -1,34 +1,36 @@ -From 72f81cd0693c1abfdb5d86bf207cfcd3201646d7 Mon Sep 17 00:00:00 2001 -Message-Id: <72f81cd0693c1abfdb5d86bf207cfcd3201646d7.1528231893.git.Jim.Somerville@windriver.com> -From: Jim Somerville -Date: Tue, 5 Jun 2018 16:51:28 -0400 +From 8fbd0edbcf6ed51b9e58d267d0ce7b40f00118a1 Mon Sep 17 00:00:00 2001 +From: Bart Wensley +Date: Tue, 9 Jul 2019 07:18:00 -0500 Subject: [PATCH 1/1] Compile issues -Signed-off-by: Jim Somerville +Signed-off-by: Bart Wensley --- - SPECS/kernel-rt.spec | 5 +++++ - 1 file changed, 5 insertions(+) + SPECS/kernel-rt.spec | 8 ++++++++ + 1 file changed, 8 insertions(+) diff --git a/SPECS/kernel-rt.spec b/SPECS/kernel-rt.spec -index ab6daf3..3c0e4b4 100644 +index 3b7985c..5025db7 100644 --- a/SPECS/kernel-rt.spec +++ b/SPECS/kernel-rt.spec -@@ -418,6 +418,9 @@ Patch1027: dpt_i2o-fix-build-warning.patch +@@ -418,6 +418,11 @@ Patch1027: dpt_i2o-fix-build-warning.patch # DRBD was choking on write same Patch1028: turn-off-write-same-in-smartqpi-driver.patch Patch1029: restrict-iSCSI-kthreads-to-CPUs-in-cpu_kthread_mask.patch +Patch1030: fix-compilation-issues.patch +# Fix CentOS 7.6 upgrade compile error +Patch1031: fix-CentOS-7.6-upgrade-compile-error.patch ++# Compile fix for disabling CONFIG_MEMCG_KMEM ++Patch1032: compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root -@@ -780,6 +783,8 @@ ApplyPatch aic94xx-Skip-reading-user-settings-if-flash-is-not-f.patch +@@ -780,6 +785,9 @@ ApplyPatch aic94xx-Skip-reading-user-settings-if-flash-is-not-f.patch ApplyPatch dpt_i2o-fix-build-warning.patch ApplyPatch turn-off-write-same-in-smartqpi-driver.patch ApplyPatch restrict-iSCSI-kthreads-to-CPUs-in-cpu_kthread_mask.patch +ApplyPatch fix-compilation-issues.patch +ApplyPatch fix-CentOS-7.6-upgrade-compile-error.patch ++ApplyPatch compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch # move off upstream version mechanism if [ -e localversion-rt ]; then diff --git a/kernel/kernel-rt/centos/patches/compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch b/kernel/kernel-rt/centos/patches/compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch new file mode 100644 index 000000000..d05a08141 --- /dev/null +++ b/kernel/kernel-rt/centos/patches/compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch @@ -0,0 +1,35 @@ +From a209e9637eacb353adb97f29dd059e63084d30df Mon Sep 17 00:00:00 2001 +From: Bart Wensley +Date: Tue, 9 Jul 2019 07:25:32 -0500 +Subject: [PATCH 1/1] compile fix for disabling CONFIG_MEMCG_KMEM + +Signed-off-by: Bart Wensley +--- + mm/memcontrol.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mm/memcontrol.c b/mm/memcontrol.c +index da97e2c..68fd46b 100644 +--- a/mm/memcontrol.c ++++ b/mm/memcontrol.c +@@ -3010,6 +3010,8 @@ static void __mem_cgroup_commit_charge(struct mem_cgroup *memcg, + memcg_check_events(memcg, page); + } + ++static DEFINE_MUTEX(memcg_limit_mutex); ++ + #ifdef CONFIG_MEMCG_KMEM + static inline bool memcg_can_account_kmem(struct mem_cgroup *memcg) + { +@@ -3510,8 +3512,6 @@ out: + return new_cachep; + } + +-static DEFINE_MUTEX(memcg_limit_mutex); +- + int __kmem_cache_destroy_memcg_children(struct kmem_cache *s) + { + struct kmem_cache *c; +-- +1.8.3.1 + diff --git a/kernel/kernel-rt/centos/patches/kernel-3.10.0-x86_64-rt.config.tis_extra b/kernel/kernel-rt/centos/patches/kernel-3.10.0-x86_64-rt.config.tis_extra index 9499c311d..b68811bcb 100644 --- a/kernel/kernel-rt/centos/patches/kernel-3.10.0-x86_64-rt.config.tis_extra +++ b/kernel/kernel-rt/centos/patches/kernel-3.10.0-x86_64-rt.config.tis_extra @@ -956,3 +956,6 @@ CONFIG_TORTURE_TEST=n CONFIG_RCU_TORTURE_TEST=n CONFIG_LOCK_TORTURE_TEST=n +# Disable kernel memory accounting, which is broken +CONFIG_MEMCG_KMEM=n + diff --git a/kernel/kernel-std/centos/build_srpm.data b/kernel/kernel-std/centos/build_srpm.data index c06f85d68..dab446664 100644 --- a/kernel/kernel-std/centos/build_srpm.data +++ b/kernel/kernel-std/centos/build_srpm.data @@ -1,4 +1,4 @@ COPY_LIST="files/*" -TIS_PATCH_VER=1 +TIS_PATCH_VER=2 BUILD_IS_BIG=11 BUILD_IS_SLOW=12 diff --git a/kernel/kernel-std/centos/meta_patches/Compile-issues.patch b/kernel/kernel-std/centos/meta_patches/Compile-issues.patch index 092f88f0c..b46a1a3e5 100644 --- a/kernel/kernel-std/centos/meta_patches/Compile-issues.patch +++ b/kernel/kernel-std/centos/meta_patches/Compile-issues.patch @@ -1,18 +1,18 @@ -From 0bdbfc48c66177522eae9bb7c0449f39f418e609 Mon Sep 17 00:00:00 2001 -From: Jim Somerville -Date: Wed, 30 May 2018 13:12:03 -0400 -Subject: [PATCH 4/5] Compile issues +From 6b9579fcfb774f20f114ebc621a925d35d3aa034 Mon Sep 17 00:00:00 2001 +From: Bart Wensley +Date: Tue, 9 Jul 2019 06:36:33 -0500 +Subject: [PATCH 1/1] Compile issues -Signed-off-by: Jim Somerville +Signed-off-by: Bart Wensley --- - SPECS/kernel.spec | 6 ++++++ - 1 file changed, 6 insertions(+) + SPECS/kernel.spec | 9 +++++++++ + 1 file changed, 9 insertions(+) diff --git a/SPECS/kernel.spec b/SPECS/kernel.spec -index 01dd989..d45c419 100644 +index 3f774c2..b69967d 100644 --- a/SPECS/kernel.spec +++ b/SPECS/kernel.spec -@@ -489,6 +489,10 @@ Patch40024: aic94xx-Skip-reading-user-settings-if-flash-is-not-f.patch +@@ -489,6 +489,12 @@ Patch40024: aic94xx-Skip-reading-user-settings-if-flash-is-not-f.patch Patch40025: dpt_i2o-fix-build-warning.patch # DRBD was choking on write same Patch40026: turn-off-write-same-in-smartqpi-driver.patch @@ -20,18 +20,21 @@ index 01dd989..d45c419 100644 +Patch40027: fix-compilation-issues.patch +# Fix CentOS 7.6 upgrade compile error +Patch40028: fix-CentOS-7.6-upgrade-compile-error.patch ++# Compile fix for disabling CONFIG_MEMCG_KMEM ++Patch40029: compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch BuildRoot: %{_tmppath}/kernel-%{KVRA}-root -@@ -859,6 +863,8 @@ ApplyOptionalPatch US103091-IMA-System-Configuration.patch +@@ -859,6 +865,9 @@ ApplyOptionalPatch US103091-IMA-System-Configuration.patch ApplyOptionalPatch aic94xx-Skip-reading-user-settings-if-flash-is-not-f.patch ApplyOptionalPatch dpt_i2o-fix-build-warning.patch ApplyOptionalPatch turn-off-write-same-in-smartqpi-driver.patch +ApplyOptionalPatch fix-compilation-issues.patch +ApplyOptionalPatch fix-CentOS-7.6-upgrade-compile-error.patch ++ApplyOptionalPatch compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch # Any further pre-build tree manipulations happen here. -- -2.7.4 +1.8.3.1 diff --git a/kernel/kernel-std/centos/patches/compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch b/kernel/kernel-std/centos/patches/compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch new file mode 100644 index 000000000..c41abbb37 --- /dev/null +++ b/kernel/kernel-std/centos/patches/compile-fix-for-disabling-CONFIG_MEMCG_KMEM.patch @@ -0,0 +1,35 @@ +From 66936b9bfda2fa11019bf45298047c7365fdacb4 Mon Sep 17 00:00:00 2001 +From: Bart Wensley +Date: Mon, 8 Jul 2019 13:32:44 -0500 +Subject: [PATCH 1/1] compile fix for disabling CONFIG_MEMCG_KMEM + +Signed-off-by: Bart Wensley +--- + mm/memcontrol.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mm/memcontrol.c b/mm/memcontrol.c +index 175fef9..e475427 100644 +--- a/mm/memcontrol.c ++++ b/mm/memcontrol.c +@@ -3007,6 +3007,8 @@ static void __mem_cgroup_commit_charge(struct mem_cgroup *memcg, + memcg_check_events(memcg, page); + } + ++static DEFINE_MUTEX(memcg_limit_mutex); ++ + #ifdef CONFIG_MEMCG_KMEM + static inline bool memcg_can_account_kmem(struct mem_cgroup *memcg) + { +@@ -3507,8 +3509,6 @@ out: + return new_cachep; + } + +-static DEFINE_MUTEX(memcg_limit_mutex); +- + int __kmem_cache_destroy_memcg_children(struct kmem_cache *s) + { + struct kmem_cache *c; +-- +1.8.3.1 + diff --git a/kernel/kernel-std/centos/patches/kernel-3.10.0-x86_64.config.tis_extra b/kernel/kernel-std/centos/patches/kernel-3.10.0-x86_64.config.tis_extra index c080c2b64..d3c5982a9 100644 --- a/kernel/kernel-std/centos/patches/kernel-3.10.0-x86_64.config.tis_extra +++ b/kernel/kernel-std/centos/patches/kernel-3.10.0-x86_64.config.tis_extra @@ -811,3 +811,6 @@ CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=n # Make performance default governor CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=n CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y + +# Disable kernel memory accounting, which is broken +CONFIG_MEMCG_KMEM=n