Re: [PATCH v5 2/4] cacheinfo: Allocate memory for memory if not done from the primary CPU

From: Andreas Herrmann
Date: Sun Sep 01 2024 - 14:08:21 EST


On Mon, Aug 26, 2024 at 10:16:33PM -0700, Ricardo Neri wrote:
> Commit 5944ce092b97 ("arch_topology: Build cacheinfo from primary CPU")
> adds functionality that architectures can use to optionally allocate and
> build cacheinfo early during boot. Commit 6539cffa9495 ("cacheinfo: Add
> arch specific early level initializer") lets secondary CPUs correct (and
> reallocate memory) cacheinfo data if needed.
>
> If the early build functionality is not used and cacheinfo does not need
> correction, memory for cacheinfo is never allocated. x86 does not use the
> early build functionality. Consequently, during the cacheinfo CPU hotplug
> callback, last_level_cache_is_valid() attempts to dereference a NULL
> pointer:
>
> BUG: kernel NULL pointer dereference, address: 0000000000000100
> #PF: supervisor read access in kernel mode
> #PF: error_code(0x0000) - not present page
> PGD 0 P4D 0
> Oops: 0000 [#1] PREEPMT SMP NOPTI
> CPU: 0 PID 19 Comm: cpuhp/0 Not tainted 6.4.0-rc2 #1
> RIP: 0010: last_level_cache_is_valid+0x95/0xe0a
>
> Allocate memory for cacheinfo during the cacheinfo CPU hotplug callback if
> not done earlier.
>
> Reviewed-by: Radu Rendec <rrendec@xxxxxxxxxx>
> Reviewed-by: Sudeep Holla <sudeep.holla@xxxxxxx>
> Fixes: 6539cffa9495 ("cacheinfo: Add arch specific early level initializer")
> Signed-off-by: Ricardo Neri <ricardo.neri-calderon@xxxxxxxxxxxxxxx>

Reviewed-by: Andreas Herrmann <aherrmann@xxxxxxx>
Tested-by: Andreas Herrmann <aherrmann@xxxxxxx>

Test was done with a system equipped with AMD Phenom II X6 1055T and
test kernels based on v6.11-rc5-176-g20371ba12063.


Thanks,
Andreas