powerpc/kgdb: use DEFINE_PER_CPU to allocate kgdb's thread_info
authorTiejun Chen <tiejun.chen@windriver.com>
Thu, 20 Jun 2013 10:28:29 +0000 (18:28 +0800)
committerScott Wood <scottwood@freescale.com>
Fri, 18 Oct 2013 23:38:10 +0000 (18:38 -0500)
Use DEFINE_PER_CPU to allocate thread_info statically instead of kmalloc().
This can avoid introducing more memory check codes.

Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
[scottwood@freescale.com: wrapped long line]
Signed-off-by: Scott Wood <scottwood@freescale.com>
arch/powerpc/kernel/kgdb.c

index c1eef241017a1224bd424398d05b95f03cd38079..83e89d310734f676274f819f2897777ce9ad3f72 100644 (file)
@@ -151,15 +151,16 @@ static int kgdb_handle_breakpoint(struct pt_regs *regs)
        return 1;
 }
 
+static DEFINE_PER_CPU(struct thread_info, kgdb_thread_info);
 static int kgdb_singlestep(struct pt_regs *regs)
 {
        struct thread_info *thread_info, *exception_thread_info;
-       struct thread_info *backup_current_thread_info;
+       struct thread_info *backup_current_thread_info =
+               &__get_cpu_var(kgdb_thread_info);
 
        if (user_mode(regs))
                return 0;
 
-       backup_current_thread_info = kmalloc(sizeof(struct thread_info), GFP_KERNEL);
        /*
         * On Book E and perhaps other processors, singlestep is handled on
         * the critical exception stack.  This causes current_thread_info()
@@ -185,7 +186,6 @@ static int kgdb_singlestep(struct pt_regs *regs)
                /* Restore current_thread_info lastly. */
                memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info);
 
-       kfree(backup_current_thread_info);
        return 1;
 }