summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2011-04-07 21:44:21 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-04-18 13:08:19 +1000
commit84ffae55af79d7b8834fd0c08d0d1ebf2c77f91e (patch)
tree05eb620325efeac9cb2ddb4bc845416fdaf6c302
parent127493d5dc73589cbe00ea5ec8357cc2a4c0d82a (diff)
downloadlinux-3.10-84ffae55af79d7b8834fd0c08d0d1ebf2c77f91e.tar.gz
linux-3.10-84ffae55af79d7b8834fd0c08d0d1ebf2c77f91e.tar.bz2
linux-3.10-84ffae55af79d7b8834fd0c08d0d1ebf2c77f91e.zip
powerpc: Fix oops if scan_dispatch_log is called too early
We currently enable interrupts before the dispatch log for the boot cpu is setup. If a timer interrupt comes in early enough we oops in scan_dispatch_log: Unable to handle kernel paging request for data at address 0x00000010 ... .scan_dispatch_log+0xb0/0x170 .account_system_vtime+0xa0/0x220 .irq_enter+0x88/0xc0 .do_IRQ+0x48/0x230 The patch below adds a check to scan_dispatch_log to ensure the dispatch log has been allocated. Signed-off-by: Anton Blanchard <anton@samba.org> Cc: <stable@kernel.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--arch/powerpc/kernel/time.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 375480c56eb..f33acfd872a 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -229,6 +229,9 @@ static u64 scan_dispatch_log(u64 stop_tb)
u64 stolen = 0;
u64 dtb;
+ if (!dtl)
+ return 0;
+
if (i == vpa->dtl_idx)
return 0;
while (i < vpa->dtl_idx) {