Re: [PATCH] mm/kmemleak: fix the possible wrong memory scanning period

From: Catalin Marinas
Date: Tue Jun 15 2021 - 05:36:17 EST


On Mon, Jun 14, 2021 at 01:40:22AM +0800, Yanfei Xu wrote:
> This commit contains 3 modifies:
>
> 1.Convert the type of jiffies_scan_wait to "unsigned long".
>
> 2.Use READ/WRITE_ONCE() for accessing "jiffies_scan_wait".
>
> 3.Fix the possible wrong memory scanning period. If you set a large
> memory scanning period like blow, then the "secs" variable will be
> non-zero, however the value of "jiffies_scan_wait" will be zero.
>
> echo "scan=0x10000000" > /sys/kernel/debug/kmemleak
>
> It is because the type of the msecs_to_jiffies()'s parameter is
> "unsigned int", and the "secs * 1000" is larger than its max value.
> This in turn leads a unexpected jiffies_scan_wait, maybe zero. We
> corret it by replacing kstrtoul() with kstrtouint(), and check the
> msecs to prevent it larger than UINT_MAX.
>
> Signed-off-by: Yanfei Xu <yanfei.xu@xxxxxxxxxxxxx>

Acked-by: Catalin Marinas <catalin.marinas@xxxxxxx>