With KASAN software tag-based mode enabled PGD pointer stored in current_mm structure is tagged while the same pointer computed through __va(read_cr3_pa()) ends up with the tag space filled with ones. Use current_mm->pgd' physical address and drop the __va() so the VM_WARN_ON_ONCE can work properly and not report false positives while KASAN is enabled. Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@xxxxxxxxx> --- arch/x86/mm/tlb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 86593d1b787d..95e3dc1fb766 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -1295,7 +1295,7 @@ bool nmi_uaccess_okay(void) if (loaded_mm != current_mm) return false; - VM_WARN_ON_ONCE(current_mm->pgd != __va(read_cr3_pa())); + VM_WARN_ON_ONCE(__pa(current_mm->pgd) != read_cr3_pa()); return true; } -- 2.47.1