Commit 587edd70 authored by Tony Luck's avatar Tony Luck Committed by Borislav Petkov (AMD)

x86/resctrl: Initialize on-stack struct rmid_read instances

New semantics rely on some struct rmid_read members having NULL values to
distinguish between the SNC and non-SNC scenarios.  resctrl can thus no longer
rely on this struct not being initialized properly.

Initialize all on-stack declarations of struct rmid_read:

  rdtgroup_mondata_show()
  mbm_update()
  mkdir_mondata_subdir()

to ensure that garbage values from the stack are not passed down to other
functions.

  [ bp: Massage commit message. ]
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Tested-by: default avatarBabu Moger <babu.moger@amd.com>
Link: https://lore.kernel.org/r/20240628215619.76401-11-tony.luck@intel.com
parent fb1f51f6
...@@ -529,7 +529,6 @@ void mon_event_read(struct rmid_read *rr, struct rdt_resource *r, ...@@ -529,7 +529,6 @@ void mon_event_read(struct rmid_read *rr, struct rdt_resource *r,
rr->evtid = evtid; rr->evtid = evtid;
rr->r = r; rr->r = r;
rr->d = d; rr->d = d;
rr->val = 0;
rr->first = first; rr->first = first;
rr->arch_mon_ctx = resctrl_arch_mon_ctx_alloc(r, evtid); rr->arch_mon_ctx = resctrl_arch_mon_ctx_alloc(r, evtid);
if (IS_ERR(rr->arch_mon_ctx)) { if (IS_ERR(rr->arch_mon_ctx)) {
...@@ -557,12 +556,12 @@ int rdtgroup_mondata_show(struct seq_file *m, void *arg) ...@@ -557,12 +556,12 @@ int rdtgroup_mondata_show(struct seq_file *m, void *arg)
{ {
struct kernfs_open_file *of = m->private; struct kernfs_open_file *of = m->private;
struct rdt_domain_hdr *hdr; struct rdt_domain_hdr *hdr;
struct rmid_read rr = {0};
struct rdt_mon_domain *d; struct rdt_mon_domain *d;
u32 resid, evtid, domid; u32 resid, evtid, domid;
struct rdtgroup *rdtgrp; struct rdtgroup *rdtgrp;
struct rdt_resource *r; struct rdt_resource *r;
union mon_data_bits md; union mon_data_bits md;
struct rmid_read rr;
int ret = 0; int ret = 0;
rdtgrp = rdtgroup_kn_lock_live(of->kn); rdtgrp = rdtgroup_kn_lock_live(of->kn);
......
...@@ -780,9 +780,8 @@ static void update_mba_bw(struct rdtgroup *rgrp, struct rdt_mon_domain *dom_mbm) ...@@ -780,9 +780,8 @@ static void update_mba_bw(struct rdtgroup *rgrp, struct rdt_mon_domain *dom_mbm)
static void mbm_update(struct rdt_resource *r, struct rdt_mon_domain *d, static void mbm_update(struct rdt_resource *r, struct rdt_mon_domain *d,
u32 closid, u32 rmid) u32 closid, u32 rmid)
{ {
struct rmid_read rr; struct rmid_read rr = {0};
rr.first = false;
rr.r = r; rr.r = r;
rr.d = d; rr.d = d;
......
...@@ -3029,10 +3029,10 @@ static int mkdir_mondata_subdir(struct kernfs_node *parent_kn, ...@@ -3029,10 +3029,10 @@ static int mkdir_mondata_subdir(struct kernfs_node *parent_kn,
struct rdt_mon_domain *d, struct rdt_mon_domain *d,
struct rdt_resource *r, struct rdtgroup *prgrp) struct rdt_resource *r, struct rdtgroup *prgrp)
{ {
struct rmid_read rr = {0};
union mon_data_bits priv; union mon_data_bits priv;
struct kernfs_node *kn; struct kernfs_node *kn;
struct mon_evt *mevt; struct mon_evt *mevt;
struct rmid_read rr;
char name[32]; char name[32];
int ret; int ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment