Re: [PATCH 0/9] x86/entry fixes

From: Peter Zijlstra
Date: Wed Jun 03 2020 - 08:08:26 EST


On Wed, Jun 03, 2020 at 02:00:37PM +0200, Peter Zijlstra wrote:
> On Wed, Jun 03, 2020 at 01:40:14PM +0200, Peter Zijlstra wrote:
> > The first patch is a fix for x86/entry, I'm quicky runing out of brown paper bags again :/
> >
> > The rest goes on top of these:
> >
> > https://lkml.kernel.org/r/20200602173103.931412766@xxxxxxxxxxxxx
> > https://lkml.kernel.org/r/20200602184409.22142-1-elver@xxxxxxxxxx
> >
> > patches from myself and Marco that enable *SAN builds. So far GCC-KASAN seen to
> > behave quite well, I've yet to try UBSAN.
>
> GCC10 + UBSAN:
>
> vmlinux.o: warning: objtool: match_held_lock()+0x1b2: call to __ubsan_handle_type_mismatch_v1() leaves .noinstr.text section
> vmlinux.o: warning: objtool: rcu_nmi_enter()+0x234: call to __ubsan_handle_out_of_bounds() leaves .noinstr.text section
> vmlinux.o: warning: objtool: __rcu_is_watching()+0x59: call to __ubsan_handle_out_of_bounds() leaves .noinstr.text section
>
> All of them are marked noinstr. So I suppose UBSAN is just buggered in
> GCC :-/

CLANG11 + UBSAN:

vmlinux.o: warning: objtool: exc_nmi()+0x1c3: call to __ubsan_handle_load_invalid_value() leaves .noinstr.text section
vmlinux.o: warning: objtool: poke_int3_handler()+0x72: call to __ubsan_handle_load_invalid_value() leaves .noinstr.text section
vmlinux.o: warning: objtool: mce_check_crashing_cpu()+0x71: call to __ubsan_handle_load_invalid_value() leaves .noinstr.text section
vmlinux.o: warning: objtool: lock_is_held_type()+0x95: call to __ubsan_handle_out_of_bounds() leaves .noinstr.text section
vmlinux.o: warning: objtool: rcu_nmi_enter()+0xba: call to __ubsan_handle_out_of_bounds() leaves .noinstr.text section
vmlinux.o: warning: objtool: __rcu_is_watching()+0x2c: call to __ubsan_handle_out_of_bounds() leaves .noinstr.text section

IOW, UBSAN appears to be completely hosed.