On Fri, Feb 19, 2021 at 1:22 AM Andrey Konovalov <andreyknvl@xxxxxxxxxx> wrote: > > Currently, KASAN_SW_TAGS uses 0xFF as the default tag value for > unallocated memory. The underlying idea is that since that memory > hasn't been allocated yet, it's only supposed to be dereferenced > through a pointer with the native 0xFF tag. > > While this is a good idea in terms on consistency, practically it > doesn't bring any benefit. Since the 0xFF pointer tag is a match-all > tag, it doesn't matter what tag the accessed memory has. No accesses > through 0xFF-tagged pointers are considered buggy by KASAN. > > This patch changes the default tag value for unallocated memory to 0xFE, > which is the tag KASAN uses for inaccessible memory. This doesn't affect > accesses through 0xFF-tagged pointer to this memory, but this allows > KASAN to detect wild and large out-of-bounds invalid memory accesses > through otherwise-tagged pointers. > > This is a prepatory patch for the next one, which changes the tag-based > KASAN modes to not poison the boot memory. > > Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > --- > include/linux/kasan.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/include/linux/kasan.h b/include/linux/kasan.h > index 14f72ec96492..44c147dae7e3 100644 > --- a/include/linux/kasan.h > +++ b/include/linux/kasan.h > @@ -30,7 +30,8 @@ struct kunit_kasan_expectation { > /* Software KASAN implementations use shadow memory. */ > > #ifdef CONFIG_KASAN_SW_TAGS > -#define KASAN_SHADOW_INIT 0xFF > +/* This matches KASAN_TAG_INVALID. */ > +#define KASAN_SHADOW_INIT 0xFE > #else > #define KASAN_SHADOW_INIT 0 > #endif > -- > 2.30.0.617.g56c4b15f3c-goog > Hi Andrew, Could you pick up this series into mm? The discussion on v1 of this series was hijacked discussing an unrelated issue. Thanks!