]> Pileus Git - ~andy/linux/commitdiff
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 18 Jan 2011 22:29:21 +0000 (14:29 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 18 Jan 2011 22:29:21 +0000 (14:29 -0800)
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86: Clear irqstack thread_info
  x86: Make relocatable kernel work with new binutils

1  2 
arch/x86/kernel/irq_32.c

diff --combined arch/x86/kernel/irq_32.c
index 48ff6dcffa02774d4921331011dbcf6fe9070bc3,5206bb98b16df71882007e10b7bfbdd273db7490..9974d21048fd3c0aee10b5ade01d9d9e421cfc67
@@@ -79,7 -79,7 +79,7 @@@ execute_on_irq_stack(int overflow, stru
        u32 *isp, arg1, arg2;
  
        curctx = (union irq_ctx *) current_thread_info();
 -      irqctx = __get_cpu_var(hardirq_ctx);
 +      irqctx = __this_cpu_read(hardirq_ctx);
  
        /*
         * this is where we switch to the IRQ stack. However, if we are
@@@ -129,8 -129,7 +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);
        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;
@@@ -166,7 -163,7 +163,7 @@@ asmlinkage void do_softirq(void
  
        if (local_softirq_pending()) {
                curctx = current_thread_info();
 -              irqctx = __get_cpu_var(softirq_ctx);
 +              irqctx = __this_cpu_read(softirq_ctx);
                irqctx->tinfo.task = curctx->task;
                irqctx->tinfo.previous_esp = current_stack_pointer;