x86 fix
Subsystems (2)
Linus,
Please pull the latest x86/urgent Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-2026-07-05
for you to fetch changes up to fc16126cc11d9f507130bf84ab137ee0938c900e:
- Prevent OOB access in the resctrl code while offlining CPUs when Intel SNC (Sub-NUMA Clustering) is enabled (Reinette Chatre)
Signed-off-by Ingo Molnar <[email protected]>
Thanks,
Ingo
------------------>
Reinette Chatre (1):
x86,fs/resctrl: Prevent out-of-bounds access while offlining CPU when SNC enabled
arch/x86/kernel/cpu/resctrl/monitor.c | 5 +++++ fs/resctrl/monitor.c | 39 ++++++++++++++++++++--------------- 2 files changed, 27 insertions(+), 17 deletions(-)
arch/x86/kernel/cpu/resctrl/monitor.c +5 -0
@@ -259,6 +259,11 @@ int resctrl_arch_rmid_read(struct rdt_resource *r, struct rdt_domain_hdr *hdr,if (!domain_header_is_valid (hdr,RESCTRL_MON_DOMAIN ,RDT_RESOURCE_L3 ))return -EINVAL ; +if (cpumask_empty (&hdr->cpu_mask)) { +pr_warn_once ("Domain %d has no CPUs\n" , hdr->id); +return -EINVAL ; + } + d = container_of(hdr, struct rdt_l3_mon_domain, hdr); hw_dom =resctrl_to_arch_mon_dom (d); cpu =cpumask_any (&hdr->cpu_mask);
fs/resctrl/monitor.c +22 -17
@@ -135,10 +135,10 @@ void __check_limbo(struct rdt_l3_mon_domain *d, bool force_free)struct rdt_resource *r =resctrl_arch_get_resource (RDT_RESOURCE_L3 );u32 idx_limit =resctrl_arch_system_num_rmid_idx ();struct rmid_entry *entry; +bool rmid_dirty = true;u32 idx, cur_idx =1 ;void *arch_mon_ctx;void *arch_priv; -bool rmid_dirty;u64 val =0 ; arch_priv = mon_event_all[QOS_L3_OCCUP_EVENT_ID ].arch_priv;
@@ -161,22 +161,27 @@ void __check_limbo(struct rdt_l3_mon_domain *d, bool force_free)break ; entry =__rmid_entry (idx); -if (resctrl_arch_rmid_read (r, &d->hdr, entry->closid, entry->rmid, -QOS_L3_OCCUP_EVENT_ID , arch_priv, &val, - arch_mon_ctx)) { - rmid_dirty = true; - }else { - rmid_dirty = (val >= resctrl_rmid_realloc_threshold); - -/* -* x86's CLOSID and RMID are independent numbers, so the entry's -* CLOSID is an empty CLOSID (X86_RESCTRL_EMPTY_CLOSID). On Arm the -* RMID (PMG) extends the CLOSID (PARTID) space with bits that aren't -* used to select the configuration. It is thus necessary to track both -* CLOSID and RMID because there may be dependencies between them -* on some architectures. -*/ -trace_mon_llc_occupancy_limbo (entry->closid, entry->rmid, d->hdr.id, val); +if (!force_free) { +if (resctrl_arch_rmid_read (r, &d->hdr, entry->closid, + entry->rmid,QOS_L3_OCCUP_EVENT_ID , + arch_priv, &val, arch_mon_ctx)) { + rmid_dirty = true; + }else { + rmid_dirty = (val >= resctrl_rmid_realloc_threshold); + +/* +* x86's CLOSID and RMID are independent numbers, +* so the entry's CLOSID is an empty CLOSID +* (X86_RESCTRL_EMPTY_CLOSID). On Arm the RMID +* (PMG) extends the CLOSID (PARTID) space with +* bits that aren't used to select the configuration. +* It is thus necessary to track both CLOSID and +* RMID because there may be dependencies between +* them on some architectures. +*/ +trace_mon_llc_occupancy_limbo (entry->closid, entry->rmid, + d->hdr.id, val); + } }if (force_free || !rmid_dirty) {
The pull request you sent on Sun, 5 Jul 2026 10:17:36 +0200:
The pull request you sent on Sun, 5 Jul 2026 10:17:36 +0200:
Quoted 1 line
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitx86-urgent-2026-07-05
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/f105f3631d51e8d7c49bf18ec21b873e4f38e648
Thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html