On Tue, Mar 30, 2021 at 8:57 AM Marco Elver <elver@xxxxxxxxxx> wrote: > > On systems with KPTI enabled, we can currently observe the following warning: > > BUG: using smp_processor_id() in preemptible > caller is invalidate_user_asid+0x13/0x50 > CPU: 6 PID: 1075 Comm: dmesg Not tainted 5.12.0-rc4-gda4a2b1a5479-kfence_1+ #1 > Hardware name: Hewlett-Packard HP Pro 3500 Series/2ABF, BIOS 8.11 10/24/2012 > Call Trace: > dump_stack+0x7f/0xad > check_preemption_disabled+0xc8/0xd0 > invalidate_user_asid+0x13/0x50 > flush_tlb_one_kernel+0x5/0x20 > kfence_protect+0x56/0x80 > ... > > While it normally makes sense to require preemption to be off, so that > the expected CPU's TLB is flushed and not another, in our case it really > is best-effort (see comments in kfence_protect_page()). > > Avoid the warning by disabling preemption around flush_tlb_one_kernel(). > > Link: https://lore.kernel.org/lkml/YGIDBAboELGgMgXy@xxxxxxxxxxxxxxxx/ > Reported-by: Tomi Sarvela <tomi.p.sarvela@xxxxxxxxx> > Signed-off-by: Marco Elver <elver@xxxxxxxxxx> Acked-by: Alexander Potapenko <glider@xxxxxxxxxx>