Message ID | 20210705072716.2125074-1-elver@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | kasan: fix build by including kernel.h | expand |
On Mon, Jul 5, 2021 at 10:28 AM Marco Elver <elver@google.com> wrote: > > The <linux/kasan.h> header relies on _RET_IP_ being defined, and had > been receiving that definition via inclusion of bug.h which includes > kernel.h. However, since f39650de687e that is no longer the case and get > the following build error when building CONFIG_KASAN_HW_TAGS on arm64: > > In file included from arch/arm64/mm/kasan_init.c:10: > ./include/linux/kasan.h: In function 'kasan_slab_free': > ./include/linux/kasan.h:230:39: error: '_RET_IP_' undeclared (first use in this function) > 230 | return __kasan_slab_free(s, object, _RET_IP_, init); > > Fix it by including kernel.h from kasan.h. ...which I would like to avoid in the long term, but for now it's probably the best quick fix, otherwise it will require the real split of _RET_IP or at least rethinking its location. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.org> Thanks! > Fixes: f39650de687e ("kernel.h: split out panic and oops helpers") P.S. I have tested the initial patch against full build of x86_64, and it was long time available for different CIs/build bots, none complained so far. > Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Signed-off-by: Marco Elver <elver@google.com> > --- > include/linux/kasan.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/include/linux/kasan.h b/include/linux/kasan.h > index 5310e217bd74..dd874a1ee862 100644 > --- a/include/linux/kasan.h > +++ b/include/linux/kasan.h > @@ -3,6 +3,7 @@ > #define _LINUX_KASAN_H > > #include <linux/bug.h> > +#include <linux/kernel.h> > #include <linux/static_key.h> > #include <linux/types.h> > > -- > 2.32.0.93.g670b81a890-goog >
On Mon, 5 Jul 2021 at 10:50, Andy Shevchenko <andy.shevchenko@gmail.com> wrote: > On Mon, Jul 5, 2021 at 10:28 AM Marco Elver <elver@google.com> wrote: > > The <linux/kasan.h> header relies on _RET_IP_ being defined, and had > > been receiving that definition via inclusion of bug.h which includes > > kernel.h. However, since f39650de687e that is no longer the case and get > > the following build error when building CONFIG_KASAN_HW_TAGS on arm64: > > > > In file included from arch/arm64/mm/kasan_init.c:10: > > ./include/linux/kasan.h: In function 'kasan_slab_free': > > ./include/linux/kasan.h:230:39: error: '_RET_IP_' undeclared (first use in this function) > > 230 | return __kasan_slab_free(s, object, _RET_IP_, init); > > > > Fix it by including kernel.h from kasan.h. > > ...which I would like to avoid in the long term, but for now it's > probably the best quick fix, otherwise it will require the real split > of _RET_IP or at least rethinking its location. > > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.org> > Thanks! Thanks! > > Fixes: f39650de687e ("kernel.h: split out panic and oops helpers") > > P.S. I have tested the initial patch against full build of x86_64, and > it was long time available for different CIs/build bots, none > complained so far. It only manifests on arm64 when using CONFIG_KASAN_HW_TAGS mode (requires Arm64 MTE extensions). The other 2 modes include <linux/pgtable.h> in kasan.h, and that seems to include kernel.h somewhere. The HW_TAGS mode, however, doesn't receive -next testing by a CI system AFAIK, so this was missed because it's not yet used by many (I'd expect that to change when CPUs with MTE are more widespread). Thanks, -- Marco
On Mon, Jul 5, 2021 at 9:27 AM Marco Elver <elver@google.com> wrote: > > The <linux/kasan.h> header relies on _RET_IP_ being defined, and had > been receiving that definition via inclusion of bug.h which includes > kernel.h. However, since f39650de687e that is no longer the case and get > the following build error when building CONFIG_KASAN_HW_TAGS on arm64: > > In file included from arch/arm64/mm/kasan_init.c:10: > ./include/linux/kasan.h: In function 'kasan_slab_free': > ./include/linux/kasan.h:230:39: error: '_RET_IP_' undeclared (first use in this function) > 230 | return __kasan_slab_free(s, object, _RET_IP_, init); > > Fix it by including kernel.h from kasan.h. > > Fixes: f39650de687e ("kernel.h: split out panic and oops helpers") > Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Signed-off-by: Marco Elver <elver@google.com> > --- > include/linux/kasan.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/include/linux/kasan.h b/include/linux/kasan.h > index 5310e217bd74..dd874a1ee862 100644 > --- a/include/linux/kasan.h > +++ b/include/linux/kasan.h > @@ -3,6 +3,7 @@ > #define _LINUX_KASAN_H > > #include <linux/bug.h> > +#include <linux/kernel.h> > #include <linux/static_key.h> > #include <linux/types.h> > > -- > 2.32.0.93.g670b81a890-goog > Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
On Mon, Jul 05, 2021 at 11:01:44AM +0200, Marco Elver wrote: > On Mon, 5 Jul 2021 at 10:50, Andy Shevchenko <andy.shevchenko@gmail.com> wrote: > > On Mon, Jul 5, 2021 at 10:28 AM Marco Elver <elver@google.com> wrote: > > > The <linux/kasan.h> header relies on _RET_IP_ being defined, and had > > > been receiving that definition via inclusion of bug.h which includes > > > kernel.h. However, since f39650de687e that is no longer the case and get > > > the following build error when building CONFIG_KASAN_HW_TAGS on arm64: > > > > > > In file included from arch/arm64/mm/kasan_init.c:10: > > > ./include/linux/kasan.h: In function 'kasan_slab_free': > > > ./include/linux/kasan.h:230:39: error: '_RET_IP_' undeclared (first use in this function) > > > 230 | return __kasan_slab_free(s, object, _RET_IP_, init); > > > > > > Fix it by including kernel.h from kasan.h. > > > > ...which I would like to avoid in the long term, but for now it's > > probably the best quick fix, otherwise it will require the real split > > of _RET_IP or at least rethinking its location. > > > > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.org> > > Thanks! > > Thanks! Should be: Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> > > > Fixes: f39650de687e ("kernel.h: split out panic and oops helpers") > > > > P.S. I have tested the initial patch against full build of x86_64, and > > it was long time available for different CIs/build bots, none > > complained so far. > > It only manifests on arm64 when using CONFIG_KASAN_HW_TAGS mode > (requires Arm64 MTE extensions). The other 2 modes include > <linux/pgtable.h> in kasan.h, and that seems to include kernel.h > somewhere. The HW_TAGS mode, however, doesn't receive -next testing by > a CI system AFAIK, so this was missed because it's not yet used by > many (I'd expect that to change when CPUs with MTE are more > widespread). Got it.
diff --git a/include/linux/kasan.h b/include/linux/kasan.h index 5310e217bd74..dd874a1ee862 100644 --- a/include/linux/kasan.h +++ b/include/linux/kasan.h @@ -3,6 +3,7 @@ #define _LINUX_KASAN_H #include <linux/bug.h> +#include <linux/kernel.h> #include <linux/static_key.h> #include <linux/types.h>
The <linux/kasan.h> header relies on _RET_IP_ being defined, and had been receiving that definition via inclusion of bug.h which includes kernel.h. However, since f39650de687e that is no longer the case and get the following build error when building CONFIG_KASAN_HW_TAGS on arm64: In file included from arch/arm64/mm/kasan_init.c:10: ./include/linux/kasan.h: In function 'kasan_slab_free': ./include/linux/kasan.h:230:39: error: '_RET_IP_' undeclared (first use in this function) 230 | return __kasan_slab_free(s, object, _RET_IP_, init); Fix it by including kernel.h from kasan.h. Fixes: f39650de687e ("kernel.h: split out panic and oops helpers") Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Marco Elver <elver@google.com> --- include/linux/kasan.h | 1 + 1 file changed, 1 insertion(+)