Re: [PATCH] x86_64: Fix check for __per_cpu_offset initialisation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Date: Thu,  5 Aug 2021 15:19:37 +0200
From: Philipp Rudo <prudo@xxxxxxxxxx>
To: crash-utility@xxxxxxxxxx
Subject: [PATCH] x86_64: Fix check for
        __per_cpu_offset        initialisation
Message-ID: <20210805131937.5051-1-prudo@xxxxxxxxxx>

Since at least kernel v2.6.30 the __per_cpu_offset gets initialized to
__per_cpu_load. So first check if the __per_cpu_offset was set to a
proper value before reading any per cpu variable to prevent potential
bugs.

 
Hi, Philipp

Thank you for the patch. Can you help to describe  more details about the potential risks? and what conditions might trigger the potential bugs?

Did you mean that it's related to the crash live analysis issue(1978032)? I tried to reproduce it, but so far I haven't reproduced it with the upstream kernel.

Thanks.
Lianbo
 
Signed-off-by: Philipp Rudo <prudo@xxxxxxxxxx>
---
 x86_64.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/x86_64.c b/x86_64.c
index 6eb7d67..0bb8705 100644
--- a/x86_64.c
+++ b/x86_64.c
@@ -1327,6 +1327,8 @@ x86_64_per_cpu_init(void)
                ms->stkinfo.isize = 16384;

        for (i = cpus = 0; i < NR_CPUS; i++) {
+               if (kt->__per_cpu_offset[i] == symbol_value("__per_cpu_load"))
+                       break;
                if (!readmem(cpu_sp->value + kt->__per_cpu_offset[i],
                    KVADDR, &cpunumber, sizeof(int),
                    "cpu number (per_cpu)", QUIET|RETURN_ON_ERROR))
@@ -5602,7 +5604,7 @@ x86_64_get_smp_cpus(void)
                        return 1;

                for (i = cpus = 0; i < NR_CPUS; i++) {
-                       if (kt->__per_cpu_offset[i] == 0)
+                       if (kt->__per_cpu_offset[i] == symbol_value("__per_cpu_load"))
                                break;
                        if (!readmem(sp->value + kt->__per_cpu_offset[i], 
                            KVADDR, &cpunumber, sizeof(int),
-- 
2.31.1

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux