projects
/
GitHub
/
LineageOS
/
android_kernel_motorola_exynos9610.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
cc4949e
)
x86: mce: Handle banks == 0 case in K7 quirk
author
Andi Kleen
<andi@firstfloor.org>
Mon, 15 Jun 2009 12:52:01 +0000
(14:52 +0200)
committer
Ingo Molnar
<mingo@elte.hu>
Wed, 17 Jun 2009 06:59:45 +0000
(08:59 +0200)
Vegard Nossum reported:
> I get an MCE-related crash like this in latest linus tree:
>
> [ 0.115341] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
> [ 0.116396] CPU: L2 Cache: 512K (64 bytes/line)
> [ 0.120570] mce: CPU supports 0 MCE banks
> [ 0.124870] BUG: unable to handle kernel NULL pointer dereference at
00000000
00000010
> [ 0.128001] IP: [<
ffffffff813b98ad
>] mcheck_init+0x278/0x320
> [ 0.128001] PGD 0
> [ 0.128001] Thread overran stack, or stack corrupted
> [ 0.128001] Oops: 0002 [#1] PREEMPT SMP
> [ 0.128001] last sysfs file:
> [ 0.128001] CPU 0
> [ 0.128001] Modules linked in:
> [ 0.128001] Pid: 0, comm: swapper Not tainted 2.6.30 #426
> [ 0.128001] RIP: 0010:[<
ffffffff813b98ad
>] [<
ffffffff813b98ad
>] mcheck_init+0x278/0x320
> [ 0.128001] RSP: 0018:
ffffffff81595e38
EFLAGS:
00000246
> [ 0.128001] RAX:
0000000000000010
RBX:
ffffffff8158f900
RCX:
0000000000000000
> [ 0.128001] RDX:
0000000000000000
RSI:
00000000000000ff
RDI:
0000000000000010
> [ 0.128001] RBP:
ffffffff81595e68
R08:
0000000000000001
R09:
0000000000000000
> [ 0.128001] R10:
0000000000000010
R11:
0000000000000000
R12:
0000000000000000
> [ 0.128001] R13:
00000000ffffffff
R14:
0000000000000000
R15:
0000000000000000
> [ 0.128001] FS:
0000000000000000
(0000) GS:
ffff880002288000
(0000) knlGS:00000
>
00000000000
> [ 0.128001] CS: 0010 DS: 0018 ES: 0018 CR0:
000000008005003b
> [ 0.128001] CR2:
0000000000000010
CR3:
0000000001001000
CR4:
00000000000006b0
> [ 0.128001] DR0:
0000000000000000
DR1:
0000000000000000
DR2:
0000000000000000
> [ 0.128001] DR3:
0000000000000000
DR6:
0000000000000000
DR7:
0000000000000000
> [ 0.128001] Process swapper (pid: 0, threadinfo
ffffffff81594000
, task ffffff
>
ff8152a4a0
)
> [ 0.128001] Stack:
> [ 0.128001]
0000000081595e68
5aa50ed3b4ddbe6e
ffffffff8158f900
ffffffff8158f
> 914
> [ 0.128001]
ffffffff8158f948
0000000000000000
ffffffff81595eb8
ffffffff813b8
> 69c
> [ 0.128001]
5aa50ed3b4ddbe6e
00000001078bfbfd
0000062300000800
5aa50ed3b4ddb
> e6e
> [ 0.128001] Call Trace:
> [ 0.128001] [<
ffffffff813b869c
>] identify_cpu+0x331/0x392
> [ 0.128001] [<
ffffffff815a1445
>] identify_boot_cpu+0x23/0x6e
> [ 0.128001] [<
ffffffff815a14ac
>] check_bugs+0x1c/0x60
> [ 0.128001] [<
ffffffff8159c075
>] start_kernel+0x403/0x46e
> [ 0.128001] [<
ffffffff8159b2ac
>] x86_64_start_reservations+0xac/0xd5
> [ 0.128001] [<
ffffffff8159b3ea
>] x86_64_start_kernel+0x115/0x14b
> [ 0.128001] [<
ffffffff8159b140
>] ? early_idt_handler+0x0/0x71
This happens on QEMU which reports MCA capability, but no banks.
Without this patch there is a buffer overrun and boot ops because
the code would try to initialize the 0 element of a zero length
kmalloc() buffer.
Reported-by: Vegard Nossum <vegard.nossum@gmail.com>
Tested-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
LKML-Reference: <
20090615125200
.GD31969@one.firstfloor.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/mcheck/mce.c
patch
|
blob
|
blame
|
history
diff --git
a/arch/x86/kernel/cpu/mcheck/mce.c
b/arch/x86/kernel/cpu/mcheck/mce.c
index fabba15e455864c6768eb958ac61fba3e2acf8a8..d9d77cfd8ccead8edf31263febe4ff0f2d436fc3 100644
(file)
--- a/
arch/x86/kernel/cpu/mcheck/mce.c
+++ b/
arch/x86/kernel/cpu/mcheck/mce.c
@@
-1245,7
+1245,7
@@
static void mce_cpu_quirks(struct cpuinfo_x86 *c)
* Various K7s with broken bank 0 around. Always disable
* by default.
*/
- if (c->x86 == 6)
+ if (c->x86 == 6
&& banks > 0
)
bank[0] = 0;
}