Re: "kernel ade access" oops on LoongArch

From: Youling Tang
Date: Wed Feb 15 2023 - 03:26:10 EST




On 02/15/2023 04:07 PM, Xi Ruoyao wrote:
On Wed, 2023-02-15 at 15:51 +0800, Jinyang He wrote:

There was a build error in make check, so only tst-mallocfork3-
malloc-check was tested separately.

# make test t=malloc/tst-mallocfork3-malloc-check
make[2]: 离开目录“/home/loongson/glibc/malloc”
PASS: malloc/tst-mallocfork3-malloc-check
original exit status 0
info: signals received during fork: 301
info: signals received during free: 1693
info: signals received during malloc: 119
make[1]: 离开目录“/home/loongson/glibc”

A total of five tests are PASS, and the serial port does not display
CallTrace.

Youling.

I had test it by using the cmd "while true..." Ruoyao gave on

Loongson-3A5000, CLFS 7.1, 6.2-rc8 kernel with those patches and

6.2-rc7 kernel form loongson-next. No calltrace displayed, either.

Hmm... I've read the code for a while and I couldn't see how it could
end up accessing a bad address too. Maybe my hardware or compiler is
really faulty?

Can you modify the kernel as follows and test it, so as to avoid
possible relationship with the exception table data link position and
alignment rules (or use EXCEPTION_TABLE(12))?

--- a/arch/loongarch/kernel/vmlinux.lds.S
+++ b/arch/loongarch/kernel/vmlinux.lds.S
@@ -4,7 +4,6 @@
#include <asm/thread_info.h>

#define PAGE_SIZE _PAGE_SIZE
-#define RO_EXCEPTION_TABLE_ALIGN 4

/*
* Put .bss..swapper_pg_dir as the first thing in .bss. This will
@@ -54,6 +53,8 @@ SECTIONS
. = ALIGN(PECOFF_SEGMENT_ALIGN);
_etext = .;

+ EXCEPTION_TABLE(16)
+

Youling.