lkml.org 
[lkml]   [2019]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [patch V3 01/32] mm/slab: Fix broken stack trace storage
On Sun, 14 Apr 2019, Andy Lutomirski wrote:
> > + struct stack_trace trace = {
> > + .max_entries = size - 4;
> > + .entries = addr;
> > + .skip = 3;
> > + };
>
> This looks correct, but I think that it would have been clearer if you
> left the size -= 3 above. You're still incrementing addr, but you're
> not decrementing size, so they're out of sync and the resulting code
> is hard to follow.

What about the below?

--- a/mm/slab.c
+++ b/mm/slab.c
@@ -1480,10 +1480,12 @@ static void store_stackinfo(struct kmem_
*addr++ = 0x12345678;
*addr++ = caller;
*addr++ = smp_processor_id();
+ size -= 3;
#ifdef CONFIG_STACKTRACE
{
struct stack_trace trace = {
- .max_entries = size - 4;
+ /* Leave one for the end marker below */
+ .max_entries = size - 1;
.entries = addr;
.skip = 3;
};
\
 
 \ /
  Last update: 2019-04-14 18:35    [W:0.239 / U:0.008 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site