Hi,

A fix that solves a boot crash in certain circumstances, please queue this up 
for 
-stable once it hits Linus's tree.

Thanks,

        Ingo

----- Forwarded message from tip-bot for Brian Gerst <[email protected]> -----

Date: Tue, 18 Jan 2011 19:03:53 GMT
From: tip-bot for Brian Gerst <[email protected]>
To: [email protected]
Cc: [email protected], [email protected], [email protected],
        [email protected], [email protected],
        [email protected], [email protected], [email protected],
        [email protected], [email protected]
Subject: [tip:x86/urgent] x86: Clear irqstack thread_info

Commit-ID:  7b698ea377e10b074ceef0d79218e6622d618421
Gitweb:     http://git.kernel.org/tip/7b698ea377e10b074ceef0d79218e6622d618421
Author:     Brian Gerst <[email protected]>
AuthorDate: Mon, 17 Jan 2011 07:32:10 -0500
Committer:  Ingo Molnar <[email protected]>
CommitDate: Tue, 18 Jan 2011 14:58:37 +0100

x86: Clear irqstack thread_info

Mathias Merz reported that v2.6.37 failed to boot on his
system.

Make sure that the thread_info part of the irqstack is
initialized to zeroes.

Reported-and-Tested-by: Matthias Merz <[email protected]>
Signed-off-by: Brian Gerst <[email protected]>
Acked-by: Pekka Enberg <[email protected]>
Cc: Arjan van de Ven <[email protected]>
Cc: Linus Torvalds <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
---
 arch/x86/kernel/irq_32.c |    7 ++-----
 1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
index 96656f2..5206bb9 100644
--- a/arch/x86/kernel/irq_32.c
+++ b/arch/x86/kernel/irq_32.c
@@ -129,8 +129,7 @@ void __cpuinit irq_ctx_init(int cpu)
        irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
                                               THREAD_FLAGS,
                                               THREAD_ORDER));
-       irqctx->tinfo.task              = NULL;
-       irqctx->tinfo.exec_domain       = NULL;
+       memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
        irqctx->tinfo.cpu               = cpu;
        irqctx->tinfo.preempt_count     = HARDIRQ_OFFSET;
        irqctx->tinfo.addr_limit        = MAKE_MM_SEG(0);
@@ -140,10 +139,8 @@ void __cpuinit irq_ctx_init(int cpu)
        irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
                                               THREAD_FLAGS,
                                               THREAD_ORDER));
-       irqctx->tinfo.task              = NULL;
-       irqctx->tinfo.exec_domain       = NULL;
+       memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
        irqctx->tinfo.cpu               = cpu;
-       irqctx->tinfo.preempt_count     = 0;
        irqctx->tinfo.addr_limit        = MAKE_MM_SEG(0);
 
        per_cpu(softirq_ctx, cpu) = irqctx;

----- End forwarded message -----

-- 
Thanks,

        Ingo

_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to