--- /dev/null
+From 64e87d4bd3201bf8a4685083ee4daf5c0d001452 Mon Sep 17 00:00:00 2001
+From: James Morse <james.morse@arm.com>
+Date: Fri, 17 Sep 2021 16:59:58 +0000
+Subject: x86/resctrl: Free the ctrlval arrays when domain_setup_mon_state() fails
+
+From: James Morse <james.morse@arm.com>
+
+commit 64e87d4bd3201bf8a4685083ee4daf5c0d001452 upstream.
+
+domain_add_cpu() is called whenever a CPU is brought online. The
+earlier call to domain_setup_ctrlval() allocates the control value
+arrays.
+
+If domain_setup_mon_state() fails, the control value arrays are not
+freed.
+
+Add the missing kfree() calls.
+
+Fixes: 1bd2a63b4f0de ("x86/intel_rdt/mba_sc: Add initialization support")
+Fixes: edf6fa1c4a951 ("x86/intel_rdt/cqm: Add RMID (Resource monitoring ID) management")
+Signed-off-by: James Morse <james.morse@arm.com>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Acked-by: Reinette Chatre <reinette.chatre@intel.com>
+Cc: <stable@vger.kernel.org>
+Link: https://lkml.kernel.org/r/20210917165958.28313-1-james.morse@arm.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/kernel/cpu/resctrl/core.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/x86/kernel/cpu/resctrl/core.c
++++ b/arch/x86/kernel/cpu/resctrl/core.c
+@@ -590,6 +590,8 @@ static void domain_add_cpu(int cpu, stru
+ }
+
+ if (r->mon_capable && domain_setup_mon_state(r, d)) {
++ kfree(d->ctrl_val);
++ kfree(d->mbps_val);
+ kfree(d);
+ return;
+ }