[PATCH v1 07/11] arm_mpam: Initialize all of struct mon_read in mpam_restore_mbwu_state()

Lee Trager lee at trager.us
Mon Jul 20 16:05:50 PDT 2026


On 7/10/26 4:55 AM, Ben Horgan wrote:

> m->err may be read before initialization in __ris_msmon_read() when called
> from mpam_restore_mbwu_state().
>
> Initialize the whole struct mon_read in mpam_restore_mbwu_state() and fix
> the spelling of mbwu in the name.
>
> Fixes: 41e8a14950e1 ("arm_mpam: Track bandwidth counter state for power management")
> Signed-off-by: Ben Horgan <ben.horgan at arm.com>
> ---
>   drivers/resctrl/mpam_devices.c | 13 +++++++------
>   1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c
> index a49f426aefc0..c9adc450f087 100644
> --- a/drivers/resctrl/mpam_devices.c
> +++ b/drivers/resctrl/mpam_devices.c
> @@ -1640,7 +1640,6 @@ static int mpam_restore_mbwu_state(void *_ris)
>   {
>   	int i;
>   	u64 val;
val is still uninitialized. Its passed to to __ris_mon_read() below 
which does *m->val += now;
> -	struct mon_read mwbu_arg;
>   	struct mpam_msc_ris *ris = _ris;
>   	struct msmon_mbwu_state *mbwu_state;
>   	struct mpam_msc *msc = ris->vmsc->msc;
> @@ -1653,16 +1652,18 @@ static int mpam_restore_mbwu_state(void *_ris)
>   			return -EIO;
>   
>   		if (ris->mbwu_state[i].enabled) {
> -			mwbu_arg.ris = ris;
> -			mwbu_arg.ctx = &ris->mbwu_state[i].cfg;
> -			mwbu_arg.type = mpam_msmon_choose_counter(class);
> -			mwbu_arg.val = &val;
> +			struct mon_read mbwu_arg = {
> +				.ris = ris,
> +				.ctx = &ris->mbwu_state[i].cfg,
> +				.type = mpam_msmon_choose_counter(class),
> +				.val = &val
> +			};
>   
>   			mbwu_state->reset_on_next_read = true;
>   
>   			mpam_mon_sel_unlock(msc);
>   
> -			__ris_msmon_read(&mwbu_arg);
> +			__ris_msmon_read(&mbwu_arg);
>   		} else {
>   			mpam_mon_sel_unlock(msc);
>   		}



More information about the linux-arm-kernel mailing list