[PATCH] riscv: mm: Fix concurrency in mark_new_valid_map()

Paul Walmsley pjw at kernel.org
Wed Jul 29 11:46:07 PDT 2026


Hi Vivian,

On Thu, 9 Jul 2026, Paul Walmsley wrote:

> On Mon, 29 Jun 2026, Vivian Wang wrote:
> 
> > Turns out, the concurrency concerns [1] were justified - BOSC reported a
> > spurious fault in KFENCE that still triggers despite previous fixes,
> > which KFENCE reports as a false-positive.
> > 
> > Fix the concurrency problems in mark_new_valid_map():
> > 
> > - Add smp_wmb() before filling the bitmap, to make sure page table
> >   writes are "received".
> 
> Probably this expression should be clarified.  I guess the intent here is 
> to ensure that the page table write is visible by other cores either 
> before or simultaneously with the bitmap fill?  And the purpose of that is 
> to avoid a situation where another core could execute an sfence.vma before 
> the PTE write is observable by the other core?  If so, we should probably 
> write something like this out in the commit message.
> 
> I wonder if there's still a window where spurious faults could be observed 
> by kfence.  If another core "B" faults (due to its local TLB caching an 
> invalid PTE) after the PTE write is observable by B, but before the bitmap 
> write is observable by B, core B won't sfence.vma.  If this possibility 
> still exists, we should probably document it.  It might be possible to 
> narrow that window further with a smp_mb() after the bitmap fill, but 
> unclear that it's worth trying unless more spurious faults are seen.
>   
> ...
> 
> Also, now that we're adding an smp_wmb(), we should probably expand the 
> preemption-disabled section in kfence_protect_page() to cover the entire 
> function, to eliminate any risk that the PTE writes execute on a separate 
> CPU from the smp_wmb().

Are you planning to update this one?


- Paul



More information about the linux-riscv mailing list