[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.21.1904141832400.4917@nanos.tec.linutronix.de>
Date: Sun, 14 Apr 2019 18:34:14 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: Andy Lutomirski <luto@...nel.org>
cc: LKML <linux-kernel@...r.kernel.org>, X86 ML <x86@...nel.org>,
Josh Poimboeuf <jpoimboe@...hat.com>,
Sean Christopherson <sean.j.christopherson@...el.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Pekka Enberg <penberg@...nel.org>,
Linux-MM <linux-mm@...ck.org>
Subject: Re: [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;
};
Powered by blists - more mailing lists