]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/resctrl: Initialize on-stack struct rmid_read instances
authorTony Luck <tony.luck@intel.com>
Fri, 28 Jun 2024 21:56:10 +0000 (14:56 -0700)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 2 Jul 2024 17:49:54 +0000 (19:49 +0200)
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: Tony Luck <tony.luck@intel.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Tested-by: Babu Moger <babu.moger@amd.com>
Link: https://lore.kernel.org/r/20240628215619.76401-11-tony.luck@intel.com
arch/x86/kernel/cpu/resctrl/ctrlmondata.c
arch/x86/kernel/cpu/resctrl/monitor.c
arch/x86/kernel/cpu/resctrl/rdtgroup.c

index 3b9383612c359cf2946623757921c9479f5d2df9..4d76ff31a9e0d3f3dbe1fc2ef268999408231469 100644 (file)
@@ -529,7 +529,6 @@ void mon_event_read(struct rmid_read *rr, struct rdt_resource *r,
        rr->evtid = evtid;
        rr->r = r;
        rr->d = d;
-       rr->val = 0;
        rr->first = first;
        rr->arch_mon_ctx = resctrl_arch_mon_ctx_alloc(r, evtid);
        if (IS_ERR(rr->arch_mon_ctx)) {
@@ -557,12 +556,12 @@ int rdtgroup_mondata_show(struct seq_file *m, void *arg)
 {
        struct kernfs_open_file *of = m->private;
        struct rdt_domain_hdr *hdr;
+       struct rmid_read rr = {0};
        struct rdt_mon_domain *d;
        u32 resid, evtid, domid;
        struct rdtgroup *rdtgrp;
        struct rdt_resource *r;
        union mon_data_bits md;
-       struct rmid_read rr;
        int ret = 0;
 
        rdtgrp = rdtgroup_kn_lock_live(of->kn);
index ff4e74594a199bc3a2698609bb5920adb643be99..ca309c93a56b226032a06fd78b2c34172a2f979a 100644 (file)
@@ -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,
                       u32 closid, u32 rmid)
 {
-       struct rmid_read rr;
+       struct rmid_read rr = {0};
 
-       rr.first = false;
        rr.r = r;
        rr.d = d;
 
index 70d41a8fd78863bb8855c867f86cd547eda90226..d0443589cd86121e6db488b688446730a5e84b3f 100644 (file)
@@ -3029,10 +3029,10 @@ static int mkdir_mondata_subdir(struct kernfs_node *parent_kn,
                                struct rdt_mon_domain *d,
                                struct rdt_resource *r, struct rdtgroup *prgrp)
 {
+       struct rmid_read rr = {0};
        union mon_data_bits priv;
        struct kernfs_node *kn;
        struct mon_evt *mevt;
-       struct rmid_read rr;
        char name[32];
        int ret;