Message ID | 1362955188-3023-1-git-send-email-alex.grad@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On 03/11/2013 06:39 AM, Alex Grad wrote: > While at it, check kmalloc return value. > > Signed-off-by: Alex Grad <alex.grad@gmail.com> > --- > arch/powerpc/kernel/kgdb.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c > index 5ca82cd..9e81dd8 100644 > --- a/arch/powerpc/kernel/kgdb.c > +++ b/arch/powerpc/kernel/kgdb.c > @@ -159,7 +159,10 @@ static int kgdb_singlestep(struct pt_regs *regs) > if (user_mode(regs)) > return 0; > > - backup_current_thread_info = (struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL); > + backup_current_thread_info = kmalloc(sizeof(struct thread_info), GFP_KERNEL); > + if (!backup_current_thread_info) > + return -ENOMEM; I already send a kgdb patchset in "[v3][PATCH 6/6] powerpc/kgdb: remove copying the thread_info" to remove these stuff since its unnecessary to copy current thread_info now. Tiejun
On 03/11/2013 09:33 AM, tiejun.chen wrote: > On 03/11/2013 06:39 AM, Alex Grad wrote: >> While at it, check kmalloc return value. >> >> Signed-off-by: Alex Grad <alex.grad@gmail.com> >> --- >> arch/powerpc/kernel/kgdb.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c >> index 5ca82cd..9e81dd8 100644 >> --- a/arch/powerpc/kernel/kgdb.c >> +++ b/arch/powerpc/kernel/kgdb.c >> @@ -159,7 +159,10 @@ static int kgdb_singlestep(struct pt_regs *regs) >> if (user_mode(regs)) >> return 0; >> >> - backup_current_thread_info = (struct thread_info *)kmalloc(sizeof(struct >> thread_info), GFP_KERNEL); >> + backup_current_thread_info = kmalloc(sizeof(struct thread_info), >> GFP_KERNEL); >> + if (!backup_current_thread_info) >> + return -ENOMEM; > > I already send a kgdb patchset in "[v3][PATCH 6/6] powerpc/kgdb: remove copying > the thread_info" to remove these stuff since its unnecessary to copy current > thread_info now. I guess that patchset needs to be reviewed with more time and I also think I can leave this copying to be compatible for other platforms in the future, but we really should fix this problem I introduced right now. So I'd like to fix this with DEFINE_PER_CPU. I send a patch, "powerpc/kgdb: use DEFINE_PER_CPU to allocate kgdb's thread_info", so please take a look at if that version is fine to every one. Any comments are appreciated. BTW, I will update that kgdb patchset with this change to resend. Tiejun
diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c index 5ca82cd..9e81dd8 100644 --- a/arch/powerpc/kernel/kgdb.c +++ b/arch/powerpc/kernel/kgdb.c @@ -159,7 +159,10 @@ static int kgdb_singlestep(struct pt_regs *regs) if (user_mode(regs)) return 0; - backup_current_thread_info = (struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL); + backup_current_thread_info = kmalloc(sizeof(struct thread_info), GFP_KERNEL); + if (!backup_current_thread_info) + return -ENOMEM; + /* * On Book E and perhaps other processors, singlestep is handled on * the critical exception stack. This causes current_thread_info()
While at it, check kmalloc return value. Signed-off-by: Alex Grad <alex.grad@gmail.com> --- arch/powerpc/kernel/kgdb.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)