powerpc: kernel/kgdb.c: Fix memory leakage
the variable backup_current_thread_info isn't freed before existing the function. Signed-off-by: Cong Ding <dinggnu@gmail.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
572177d7c7
commit
fefd9e6f88
|
@ -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)
|
||||||
/* 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue