Re: [PATCH v4] x86/resctrl: Avoid overflow in MB settings in bw_validate()
From: Reinette Chatre
Date: Thu Oct 03 2024 - 11:18:00 EST
Hi Martin,
On 10/1/24 4:43 AM, Martin Kletzander wrote:
> The resctrl schemata file supports specifying memory bandwidth
> associated with the Memory Bandwidth Allocation (MBA) feature
> via a percentage (this is the default) or bandwidth in MiBps
> (when resctrl is mounted with the "mba_MBps" option). The allowed
> range for the bandwidth percentage is from
> /sys/fs/resctrl/info/MB/min_bandwidth to 100, using a granularity
> of /sys/fs/resctrl/info/MB/bandwidth_gran. The supported range for
> the MiBps bandwidth is 0 to U32_MAX.
>
> There are two issues with parsing of MiBps memory bandwidth:
> * The user provided MiBps is mistakenly rounded up to the granularity
> that is unique to percentage input.
> * The user provided MiBps is parsed using unsigned long (thus accepting
> values up to ULONG_MAX), and then assigned to u32 that could result in
> overflow.
>
> Do not round up the MiBps value and parse user provided bandwidth as
> the u32 it is intended to be. Use the appropriate kstrtou32() that
> can detect out of range values.
>
> Fixes: 8205a078ba78 ("x86/intel_rdt/mba_sc: Add schemata support")
> Fixes: 6ce1560d35f6 ("x86/resctrl: Switch over to the resctrl mbps_val list")
> Co-developed-by: Reinette Chatre <reinette.chatre@xxxxxxxxx>
> Signed-off-by: Reinette Chatre <reinette.chatre@xxxxxxxxx>
> Signed-off-by: Martin Kletzander <nert.pinx@xxxxxxxxx>
> ---
Thank you very much.
Reviewed-by: Reinette Chatre <reinette.chatre@xxxxxxxxx>
Reinette