Commit fefd9e6f authored by Cong Ding's avatar Cong Ding Committed by Benjamin Herrenschmidt

powerpc: kernel/kgdb.c: Fix memory leakage

the variable backup_current_thread_info isn't freed before existing the
function.
Signed-off-by: default avatarCong Ding <dinggnu@gmail.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 572177d7
...@@ -154,12 +154,12 @@ static int kgdb_handle_breakpoint(struct pt_regs *regs) ...@@ -154,12 +154,12 @@ static int kgdb_handle_breakpoint(struct pt_regs *regs)
static int kgdb_singlestep(struct pt_regs *regs) static int kgdb_singlestep(struct pt_regs *regs)
{ {
struct thread_info *thread_info, *exception_thread_info; struct thread_info *thread_info, *exception_thread_info;
struct thread_info *backup_current_thread_info = \ struct thread_info *backup_current_thread_info;
(struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL);
if (user_mode(regs)) if (user_mode(regs))
return 0; return 0;
backup_current_thread_info = (struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL);
/* /*
* On Book E and perhaps other processors, singlestep is handled on * On Book E and perhaps other processors, singlestep is handled on
* the critical exception stack. This causes current_thread_info() * the critical exception stack. This causes current_thread_info()
...@@ -185,6 +185,7 @@ static int kgdb_singlestep(struct pt_regs *regs) ...@@ -185,6 +185,7 @@ static int kgdb_singlestep(struct pt_regs *regs)
/* Restore current_thread_info lastly. */ /* Restore current_thread_info lastly. */
memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info); memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info);
kfree(backup_current_thread_info);
return 1; return 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment