[PATCH RFC 12/15] arm_mpam: Fix get_cpumask_from_cache() to clear mask on error
Yin Li <[email protected]>
| Newsgroups | dev.linux.lists.driver-core,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260811-mpam-resctrl-dt-knp-support-v1-12-ea6397bead59@oss.qualcomm.com> |
If mpam_get_cpumask_from_cache_id() fails, the affinity mask may have been partially filled before the error occurred. The caller has no way to distinguish a partial mask from a valid one, so it may misuse the incomplete result. Clear the affinity mask before returning the error so the caller always receives either a fully valid mask or an empty one. Co-developed-by: Huang Yiwei <[email protected]> Signed-off-by: Huang Yiwei <[email protected]> Signed-off-by: Yin Li <[email protected]> --- drivers/resctrl/mpam_devices.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c index eac3bc695fd1..d8856864e89a 100644 --- a/drivers/resctrl/mpam_devices.c +++ b/drivers/resctrl/mpam_devices.c @@ -243,7 +243,12 @@ static int get_cpumask_from_cache(struct device_node *cache, return -ENOENT; } - return mpam_get_cpumask_from_cache_id(cache_id, cache_level, affinity); + err = mpam_get_cpumask_from_cache_id(cache_id, cache_level, affinity); + if (err) + /* Don't leave a partially-filled mask for the caller to misuse */ + cpumask_clear(affinity); + + return err; } static int mpam_dt_count_msc(void) -- 2.34.1