Commit c2803bd5 authored by Ben Horgan's avatar Ben Horgan Committed by Catalin Marinas
Browse files

arm_mpam: Stop using uninitialized variables in __ris_msmon_read()



Dan has reported two uses of uninitialized variables in __ris_msmon_read().
If an unknown monitor type is encountered then the local variable, now, is
used uninitialized. Fix this by returning early on error. If a non-mbwu
monitor is being read then the local variable, overflow, is not initialized
but still read. Initialize it to false as overflow is not relevant for csu
monitors.

Fixes: 823e7c37 ("arm_mpam: Add mpam_msmon_read() to read monitor value")
Fixes: 9e5afb7c ("arm_mpam: Use long MBWU counters if supported")
Reported-by: default avatarkernel test robot <lkp@intel.com>
Reported-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/202512091519.RBwiJcSq-lkp@intel.com/
Closes: https://lore.kernel.org/r/202512100547.N7QPYgfb-lkp@intel.com/


Signed-off-by: default avatarBen Horgan <ben.horgan@arm.com>
Reviewed-by: default avatarJonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent dd4d71f5
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1072,7 +1072,7 @@ static void __ris_msmon_read(void *arg)
	u64 now;
	bool nrdy = false;
	bool config_mismatch;
	bool overflow;
	bool overflow = false;
	struct mon_read *m = arg;
	struct mon_cfg *ctx = m->ctx;
	bool reset_on_next_read = false;
@@ -1176,10 +1176,11 @@ static void __ris_msmon_read(void *arg)
	}
	mpam_mon_sel_unlock(msc);

	if (nrdy) {
	if (nrdy)
		m->err = -EBUSY;

	if (m->err)
		return;
	}

	*m->val += now;
}