Re: [PATCH] kasan: fix build for CONFIG_KASAN_HW_TAGS

From: Andrey Konovalov
Date: Sat Jul 10 2021 - 15:18:55 EST


On Thu, Jul 8, 2021 at 4:44 PM Mark Rutland <mark.rutland@xxxxxxx> wrote:
>
> When CONFIG_KASAN_HW_TAGS is selected, <linux/kasan.h> uses _RET_IP_,
> but doesn't explicitly include <linux/kernel.h> where this is defined.
>
> We used to get this via a transitive include, but since commit:
>
> f39650de687e3576 ("kernel.h: split out panic and oops helpers")
>
> ... this is no longer the case, and so we get a build failure:
>
> | CC arch/arm64/mm/kasan_init.o
> | In file included from arch/arm64/mm/kasan_init.c:10:
> | ./include/linux/kasan.h: In function 'kasan_slab_free':
> | ./include/linux/kasan.h:211:39: error: '_RET_IP_' undeclared (first use in this function)
> | 211 | return __kasan_slab_free(s, object, _RET_IP_, init);
> | | ^~~~~~~~
> | ./include/linux/kasan.h:211:39: note: each undeclared identifier is reported only once for each function it appears in
> | ./include/linux/kasan.h: In function 'kasan_kfree_large':
> | ./include/linux/kasan.h:219:28: error: '_RET_IP_' undeclared (first use in this function)
> | 219 | __kasan_kfree_large(ptr, _RET_IP_);
> | | ^~~~~~~~
> | ./include/linux/kasan.h: In function 'kasan_slab_free_mempool':
> | ./include/linux/kasan.h:226:34: error: '_RET_IP_' undeclared (first use in this function)
> | 226 | __kasan_slab_free_mempool(ptr, _RET_IP_);
> | | ^~~~~~~~
> | ./include/linux/kasan.h: In function 'kasan_check_byte':
> | ./include/linux/kasan.h:277:35: error: '_RET_IP_' undeclared (first use in this function)
> | 277 | return __kasan_check_byte(addr, _RET_IP_);
> | | ^~~~~~~~
>
> Fix this by including <linux/kernel.h> explicitly.

Hi Mark,

Marco already sent a fix for this. It should be in the mm tree.
(Although the link to it in the Andrew's notification email doesn't
work. But they rarely do :)

> As a heads-up, there are some unrelated runtime issues with
> CONFIG_KASAN_HW_TAGS and the recent arm64 string routines rework, which
> I'm looking into now. If you boot-test with this applied, you should
> expect to see those.

+Sam, +Robin

Looks like the new strlen routine is making accesses past the allocated buffer.

The guilty commit is 325a1de81287 ("arm64: Import updated version of
Cortex Strings' strlen").

Thanks!