From 21aa60360ce42e9212460c6a51b1c7c90e627853 Mon Sep 17 00:00:00 2001 From: Wang ShaoBo Date: Fri, 12 Mar 2021 16:16:06 +0800 Subject: [PATCH] cacheinfo: workaround cacheinfo's info_list uninitialized error hulk inclusion category: bugfix bugzilla: 48265 CVE: NA -------------------------------- Workaround cacheinfo's info_list uninitialized error in some special cases, such as free_cache_attributes() free info_list but not set num_leaves to zero when PPTT is not supported. this solution lasts until upstream issue resolved. Fixes: 950e5edb5d78 ("drivers: base: cacheinfo: Add helper to search cacheinfo by of_node") Fixes: 709c4362725a ("cacheinfo: Move resctrl's get_cache_id() to the cacheinfo header file") Signed-off-by: Wang ShaoBo Reviewed-by: Jian Cheng Signed-off-by: Zheng Zengkai --- drivers/base/cacheinfo.c | 2 ++ include/linux/cacheinfo.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c index 4bcfb06a781e..8737ad3b412a 100644 --- a/drivers/base/cacheinfo.c +++ b/drivers/base/cacheinfo.c @@ -228,6 +228,8 @@ struct cacheinfo *cacheinfo_shared_cpu_map_search(void *fw_token) for_each_online_cpu(cpu) { cpu_ci = get_cpu_cacheinfo(cpu); + if (!cpu_ci->info_list) + continue; for (index = 0; index < cache_leaves(cpu); index++) { iter = cpu_ci->info_list + index; diff --git a/include/linux/cacheinfo.h b/include/linux/cacheinfo.h index 78d7300607e3..b4135db68a38 100644 --- a/include/linux/cacheinfo.h +++ b/include/linux/cacheinfo.h @@ -131,6 +131,8 @@ static inline int get_cpu_cacheinfo_id(int cpu, int level) int i; for (i = 0; i < ci->num_leaves; i++) { + if (!ci->info_list) + continue; if (ci->info_list[i].level == level) { if (ci->info_list[i].attributes & CACHE_ID) return ci->info_list[i].id; -- GitLab