cacheinfo: clear cache_leaves(cpu) in free_cache_attributes()
authorXiongfeng Wang <wangxiongfeng2@huawei.com>
Wed, 14 Jul 2021 01:32:55 +0000 (09:32 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 21 Jul 2021 15:29:40 +0000 (17:29 +0200)
On ARM64, when PPTT(Processor Properties Topology Table) is not
implemented in ACPI boot, we will goto 'free_ci' with the following
print:
  Unable to detect cache hierarchy for CPU 0

But some other codes may still use 'num_leaves' to iterate through the
'info_list', such as get_cpu_cacheinfo_id(). If 'info_list' is NULL , it
would crash. So clear 'num_leaves' in free_cache_attributes().

Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Link: https://lore.kernel.org/r/1626226375-58730-1-git-send-email-wangxiongfeng2@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/cacheinfo.c

index bfc095956dd11b9b64c15fc97228dc2920d9a3a7..dad29622916145d3a155ae18b44b98f40ecfd532 100644 (file)
@@ -297,6 +297,7 @@ static void free_cache_attributes(unsigned int cpu)
 
        kfree(per_cpu_cacheinfo(cpu));
        per_cpu_cacheinfo(cpu) = NULL;
+       cache_leaves(cpu) = 0;
 }
 
 int __weak init_cache_level(unsigned int cpu)