Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
David S. Miller [Tue, 13 Apr 2010 07:28:45 +0000 (00:28 -0700)]
Conflicts:
lib/Kconfig.debug

1  2 
arch/sparc/kernel/smp_64.c
arch/sparc/kernel/traps_64.c
lib/Kconfig.debug

@@@ -22,8 -22,8 +22,9 @@@
  #include <linux/profile.h>
  #include <linux/bootmem.h>
  #include <linux/vmalloc.h>
 +#include <linux/ftrace.h>
  #include <linux/cpu.h>
+ #include <linux/slab.h>
  
  #include <asm/head.h>
  #include <asm/ptrace.h>
@@@ -823,13 -823,13 +824,13 @@@ void arch_send_call_function_single_ipi
                      &cpumask_of_cpu(cpu));
  }
  
 -void smp_call_function_client(int irq, struct pt_regs *regs)
 +void __irq_entry smp_call_function_client(int irq, struct pt_regs *regs)
  {
        clear_softint(1 << irq);
        generic_smp_call_function_interrupt();
  }
  
 -void smp_call_function_single_client(int irq, struct pt_regs *regs)
 +void __irq_entry smp_call_function_single_client(int irq, struct pt_regs *regs)
  {
        clear_softint(1 << irq);
        generic_smp_call_function_single_interrupt();
@@@ -965,7 -965,7 +966,7 @@@ void flush_dcache_page_all(struct mm_st
        put_cpu();
  }
  
 -void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs)
 +void __irq_entry smp_new_mmu_context_version_client(int irq, struct pt_regs *regs)
  {
        struct mm_struct *mm;
        unsigned long flags;
@@@ -1149,7 -1149,7 +1150,7 @@@ void smp_release(void
   */
  extern void prom_world(int);
  
 -void smp_penguin_jailcell(int irq, struct pt_regs *regs)
 +void __irq_entry smp_penguin_jailcell(int irq, struct pt_regs *regs)
  {
        clear_softint(1 << irq);
  
@@@ -1365,7 -1365,7 +1366,7 @@@ void smp_send_reschedule(int cpu
                      &cpumask_of_cpu(cpu));
  }
  
 -void smp_receive_signal_client(int irq, struct pt_regs *regs)
 +void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs)
  {
        clear_softint(1 << irq);
  }
@@@ -17,6 -17,7 +17,7 @@@
  #include <linux/mm.h>
  #include <linux/init.h>
  #include <linux/kdebug.h>
+ #include <linux/gfp.h>
  
  #include <asm/smp.h>
  #include <asm/delay.h>
@@@ -2202,6 -2203,27 +2203,6 @@@ void dump_stack(void
  
  EXPORT_SYMBOL(dump_stack);
  
 -static inline int is_kernel_stack(struct task_struct *task,
 -                                struct reg_window *rw)
 -{
 -      unsigned long rw_addr = (unsigned long) rw;
 -      unsigned long thread_base, thread_end;
 -
 -      if (rw_addr < PAGE_OFFSET) {
 -              if (task != &init_task)
 -                      return 0;
 -      }
 -
 -      thread_base = (unsigned long) task_stack_page(task);
 -      thread_end = thread_base + sizeof(union thread_union);
 -      if (rw_addr >= thread_base &&
 -          rw_addr < thread_end &&
 -          !(rw_addr & 0x7UL))
 -              return 1;
 -
 -      return 0;
 -}
 -
  static inline struct reg_window *kernel_stack_up(struct reg_window *rw)
  {
        unsigned long fp = rw->ins[6];
@@@ -2230,7 -2252,6 +2231,7 @@@ void die_if_kernel(char *str, struct pt
        show_regs(regs);
        add_taint(TAINT_DIE);
        if (regs->tstate & TSTATE_PRIV) {
 +              struct thread_info *tp = current_thread_info();
                struct reg_window *rw = (struct reg_window *)
                        (regs->u_regs[UREG_FP] + STACK_BIAS);
  
                 * find some badly aligned kernel stack.
                 */
                while (rw &&
 -                     count++ < 30&&
 -                     is_kernel_stack(current, rw)) {
 +                     count++ < 30 &&
 +                     kstack_valid(tp, (unsigned long) rw)) {
                        printk("Caller[%016lx]: %pS\n", rw->ins[7],
                               (void *) rw->ins[7]);
  
diff --combined lib/Kconfig.debug
@@@ -356,7 -356,7 +356,7 @@@ config SLUB_STAT
  config DEBUG_KMEMLEAK
        bool "Kernel memory leak detector"
        depends on DEBUG_KERNEL && EXPERIMENTAL && !MEMORY_HOTPLUG && \
-               (X86 || ARM || PPC || S390 || SPARC64 || SUPERH)
 -              (X86 || ARM || PPC || S390 || SUPERH || MICROBLAZE)
++              (X86 || ARM || PPC || S390 || SPARC64 || SUPERH || MICROBLAZE)
  
        select DEBUG_FS if SYSFS
        select STACKTRACE if STACKTRACE_SUPPORT