All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marco Elver <elver@google.com>
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Alexander Potapenko <glider@google.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Dmitry Vyukov <dvyukov@google.com>,
	LKML <linux-kernel@vger.kernel.org>,
	linuxppc-dev@lists.ozlabs.org,
	kasan-dev <kasan-dev@googlegroups.com>
Subject: Re: [RFC PATCH v1] powerpc: Enable KFENCE for PPC32
Date: Thu, 4 Mar 2021 15:19:31 +0100	[thread overview]
Message-ID: <CANpmjNMMMyvsF23U_5HCUe=k7eGaF-WwKV6=YZ81OJedAd2DBQ@mail.gmail.com> (raw)
In-Reply-To: <4b46ecc9-ae47-eee1-843e-e0638a356b51@csgroup.eu>

On Thu, 4 Mar 2021 at 15:08, Christophe Leroy
<christophe.leroy@csgroup.eu> wrote:
>
>
>
> Le 04/03/2021 à 13:48, Marco Elver a écrit :
> >  From d118080eb9552073f5dcf1f86198f3d86d5ea850 Mon Sep 17 00:00:00 2001
> > From: Marco Elver <elver@google.com>
> > Date: Thu, 4 Mar 2021 13:15:51 +0100
> > Subject: [PATCH] kfence: fix reports if constant function prefixes exist
> >
> > Some architectures prefix all functions with a constant string ('.' on
> > ppc64). Add ARCH_FUNC_PREFIX, which may optionally be defined in
> > <asm/kfence.h>, so that get_stack_skipnr() can work properly.
>
>
> It works, thanks.
>
> >
> > Link: https://lkml.kernel.org/r/f036c53d-7e81-763c-47f4-6024c6c5f058@csgroup.eu
> > Reported-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> > Signed-off-by: Marco Elver <elver@google.com>
>
> Tested-by: Christophe Leroy <christophe.leroy@csgroup.eu>

Thanks, I'll send this to Andrew for inclusion in -mm, since this is
not a strict dependency (it'll work without the patch, just the stack
traces aren't that pretty but still useful). If the ppc patches and
this make it into the next merge window, everything should be good for
5.13.

> > ---
> >   mm/kfence/report.c | 18 ++++++++++++------
> >   1 file changed, 12 insertions(+), 6 deletions(-)
> >
> > diff --git a/mm/kfence/report.c b/mm/kfence/report.c
> > index 519f037720f5..e3f71451ad9e 100644
> > --- a/mm/kfence/report.c
> > +++ b/mm/kfence/report.c
> > @@ -20,6 +20,11 @@
> >
> >   #include "kfence.h"
> >
> > +/* May be overridden by <asm/kfence.h>. */
> > +#ifndef ARCH_FUNC_PREFIX
> > +#define ARCH_FUNC_PREFIX ""
> > +#endif
> > +
> >   extern bool no_hash_pointers;
> >
> >   /* Helper function to either print to a seq_file or to console. */
> > @@ -67,8 +72,9 @@ static int get_stack_skipnr(const unsigned long stack_entries[], int num_entries
> >       for (skipnr = 0; skipnr < num_entries; skipnr++) {
> >               int len = scnprintf(buf, sizeof(buf), "%ps", (void *)stack_entries[skipnr]);
> >
> > -             if (str_has_prefix(buf, "kfence_") || str_has_prefix(buf, "__kfence_") ||
> > -                 !strncmp(buf, "__slab_free", len)) {
> > +             if (str_has_prefix(buf, ARCH_FUNC_PREFIX "kfence_") ||
> > +                 str_has_prefix(buf, ARCH_FUNC_PREFIX "__kfence_") ||
> > +                 !strncmp(buf, ARCH_FUNC_PREFIX "__slab_free", len)) {
> >                       /*
> >                        * In case of tail calls from any of the below
> >                        * to any of the above.
> > @@ -77,10 +83,10 @@ static int get_stack_skipnr(const unsigned long stack_entries[], int num_entries
> >               }
> >
> >               /* Also the *_bulk() variants by only checking prefixes. */
> > -             if (str_has_prefix(buf, "kfree") ||
> > -                 str_has_prefix(buf, "kmem_cache_free") ||
> > -                 str_has_prefix(buf, "__kmalloc") ||
> > -                 str_has_prefix(buf, "kmem_cache_alloc"))
> > +             if (str_has_prefix(buf, ARCH_FUNC_PREFIX "kfree") ||
> > +                 str_has_prefix(buf, ARCH_FUNC_PREFIX "kmem_cache_free") ||
> > +                 str_has_prefix(buf, ARCH_FUNC_PREFIX "__kmalloc") ||
> > +                 str_has_prefix(buf, ARCH_FUNC_PREFIX "kmem_cache_alloc"))
> >                       goto found;
> >       }
> >       if (fallback < num_entries)
> >

WARNING: multiple messages have this Message-ID (diff)
From: Marco Elver <elver@google.com>
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: LKML <linux-kernel@vger.kernel.org>,
	kasan-dev <kasan-dev@googlegroups.com>,
	Alexander Potapenko <glider@google.com>,
	Paul Mackerras <paulus@samba.org>,
	linuxppc-dev@lists.ozlabs.org, Dmitry Vyukov <dvyukov@google.com>
Subject: Re: [RFC PATCH v1] powerpc: Enable KFENCE for PPC32
Date: Thu, 4 Mar 2021 15:19:31 +0100	[thread overview]
Message-ID: <CANpmjNMMMyvsF23U_5HCUe=k7eGaF-WwKV6=YZ81OJedAd2DBQ@mail.gmail.com> (raw)
In-Reply-To: <4b46ecc9-ae47-eee1-843e-e0638a356b51@csgroup.eu>

On Thu, 4 Mar 2021 at 15:08, Christophe Leroy
<christophe.leroy@csgroup.eu> wrote:
>
>
>
> Le 04/03/2021 à 13:48, Marco Elver a écrit :
> >  From d118080eb9552073f5dcf1f86198f3d86d5ea850 Mon Sep 17 00:00:00 2001
> > From: Marco Elver <elver@google.com>
> > Date: Thu, 4 Mar 2021 13:15:51 +0100
> > Subject: [PATCH] kfence: fix reports if constant function prefixes exist
> >
> > Some architectures prefix all functions with a constant string ('.' on
> > ppc64). Add ARCH_FUNC_PREFIX, which may optionally be defined in
> > <asm/kfence.h>, so that get_stack_skipnr() can work properly.
>
>
> It works, thanks.
>
> >
> > Link: https://lkml.kernel.org/r/f036c53d-7e81-763c-47f4-6024c6c5f058@csgroup.eu
> > Reported-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> > Signed-off-by: Marco Elver <elver@google.com>
>
> Tested-by: Christophe Leroy <christophe.leroy@csgroup.eu>

Thanks, I'll send this to Andrew for inclusion in -mm, since this is
not a strict dependency (it'll work without the patch, just the stack
traces aren't that pretty but still useful). If the ppc patches and
this make it into the next merge window, everything should be good for
5.13.

> > ---
> >   mm/kfence/report.c | 18 ++++++++++++------
> >   1 file changed, 12 insertions(+), 6 deletions(-)
> >
> > diff --git a/mm/kfence/report.c b/mm/kfence/report.c
> > index 519f037720f5..e3f71451ad9e 100644
> > --- a/mm/kfence/report.c
> > +++ b/mm/kfence/report.c
> > @@ -20,6 +20,11 @@
> >
> >   #include "kfence.h"
> >
> > +/* May be overridden by <asm/kfence.h>. */
> > +#ifndef ARCH_FUNC_PREFIX
> > +#define ARCH_FUNC_PREFIX ""
> > +#endif
> > +
> >   extern bool no_hash_pointers;
> >
> >   /* Helper function to either print to a seq_file or to console. */
> > @@ -67,8 +72,9 @@ static int get_stack_skipnr(const unsigned long stack_entries[], int num_entries
> >       for (skipnr = 0; skipnr < num_entries; skipnr++) {
> >               int len = scnprintf(buf, sizeof(buf), "%ps", (void *)stack_entries[skipnr]);
> >
> > -             if (str_has_prefix(buf, "kfence_") || str_has_prefix(buf, "__kfence_") ||
> > -                 !strncmp(buf, "__slab_free", len)) {
> > +             if (str_has_prefix(buf, ARCH_FUNC_PREFIX "kfence_") ||
> > +                 str_has_prefix(buf, ARCH_FUNC_PREFIX "__kfence_") ||
> > +                 !strncmp(buf, ARCH_FUNC_PREFIX "__slab_free", len)) {
> >                       /*
> >                        * In case of tail calls from any of the below
> >                        * to any of the above.
> > @@ -77,10 +83,10 @@ static int get_stack_skipnr(const unsigned long stack_entries[], int num_entries
> >               }
> >
> >               /* Also the *_bulk() variants by only checking prefixes. */
> > -             if (str_has_prefix(buf, "kfree") ||
> > -                 str_has_prefix(buf, "kmem_cache_free") ||
> > -                 str_has_prefix(buf, "__kmalloc") ||
> > -                 str_has_prefix(buf, "kmem_cache_alloc"))
> > +             if (str_has_prefix(buf, ARCH_FUNC_PREFIX "kfree") ||
> > +                 str_has_prefix(buf, ARCH_FUNC_PREFIX "kmem_cache_free") ||
> > +                 str_has_prefix(buf, ARCH_FUNC_PREFIX "__kmalloc") ||
> > +                 str_has_prefix(buf, ARCH_FUNC_PREFIX "kmem_cache_alloc"))
> >                       goto found;
> >       }
> >       if (fallback < num_entries)
> >

  reply	other threads:[~2021-03-04 14:21 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-02  8:37 [RFC PATCH v1] powerpc: Enable KFENCE for PPC32 Christophe Leroy
2021-03-02  8:37 ` Christophe Leroy
2021-03-02  8:58 ` Marco Elver
2021-03-02  8:58   ` Marco Elver
2021-03-02  9:05   ` Christophe Leroy
2021-03-02  9:05     ` Christophe Leroy
2021-03-02  9:21     ` Alexander Potapenko
2021-03-02  9:21       ` Alexander Potapenko
2021-03-02  9:27       ` Christophe Leroy
2021-03-02  9:27         ` Christophe Leroy
2021-03-02  9:53         ` Marco Elver
2021-03-02  9:53           ` Marco Elver
2021-03-02 11:21           ` Christophe Leroy
2021-03-02 11:21             ` Christophe Leroy
2021-03-02 11:39             ` Marco Elver
2021-03-02 11:39               ` Marco Elver
2021-03-03 10:38               ` Christophe Leroy
2021-03-03 10:38                 ` Christophe Leroy
2021-03-03 10:56                 ` Marco Elver
2021-03-03 10:56                   ` Marco Elver
2021-03-04 11:23                   ` Christophe Leroy
2021-03-04 11:23                     ` Christophe Leroy
2021-03-04 11:31                     ` Marco Elver
2021-03-04 11:31                       ` Marco Elver
2021-03-04 11:48                       ` Christophe Leroy
2021-03-04 11:48                         ` Christophe Leroy
2021-03-04 12:00                         ` Christophe Leroy
2021-03-04 12:00                           ` Christophe Leroy
2021-03-04 12:02                           ` Marco Elver
2021-03-04 12:02                             ` Marco Elver
2021-03-04 12:48                         ` Marco Elver
2021-03-04 12:48                           ` Marco Elver
2021-03-04 14:08                           ` Christophe Leroy
2021-03-04 14:08                             ` Christophe Leroy
2021-03-04 14:19                             ` Marco Elver [this message]
2021-03-04 14:19                               ` Marco Elver
2021-03-05  5:01                           ` Michael Ellerman
2021-03-05  5:01                             ` Michael Ellerman
2021-03-05  7:50                             ` Marco Elver
2021-03-05  7:50                               ` Marco Elver
2021-03-05  8:23                               ` Christophe Leroy
2021-03-05  8:23                                 ` Christophe Leroy
2021-03-05  9:14                                 ` Marco Elver
2021-03-05  9:14                                   ` Marco Elver
2021-03-05 11:49                                   ` Michael Ellerman
2021-03-05 11:49                                     ` Michael Ellerman
2021-03-05 13:46                                     ` Marco Elver
2021-03-05 13:46                                       ` Marco Elver
2021-03-02 11:40             ` Michael Ellerman
2021-03-02 11:40               ` Michael Ellerman
2021-03-02 18:48               ` Segher Boessenkool
2021-03-02 18:48                 ` Segher Boessenkool
2021-03-03 10:28               ` Christophe Leroy
2021-03-03 10:28                 ` Christophe Leroy
2021-03-03 10:31           ` Christophe Leroy
2021-03-03 10:31             ` Christophe Leroy
2021-03-03 10:39             ` Marco Elver
2021-03-03 10:39               ` Marco Elver
2021-03-03 10:56               ` Christophe Leroy
2021-03-03 10:56                 ` Christophe Leroy
     [not found]             ` <CANpmjNMKEObjf=WyfDQB5vPmR5RuyUMBJyfr6P2ykCd67wyMbA__49537.1361424745$1614767987$gmane$org@mail.gmail.com>
2021-03-03 10:46               ` Andreas Schwab
2021-03-03 10:46                 ` Andreas Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CANpmjNMMMyvsF23U_5HCUe=k7eGaF-WwKV6=YZ81OJedAd2DBQ@mail.gmail.com' \
    --to=elver@google.com \
    --cc=benh@kernel.crashing.org \
    --cc=christophe.leroy@csgroup.eu \
    --cc=dvyukov@google.com \
    --cc=glider@google.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.