> On Dec 11, 2019, at 10:54 AM, Steven Price <Steven.Price@xxxxxxx> wrote: > > I believe this is a false positive (although the trace here is useless). > This patch adds a conditional lock/unlock: > > pte = walk->no_vma ? pte_offset_map(pmd, addr) : > pte_offset_map_lock(walk->mm, pmd, addr, &ptl); > ... > if (!walk->no_vma) > spin_unlock(ptl); > pte_unmap(pte); > > I'm not sure how to match sparse happy about that. Is the only option to > have two versions of the walk_pte_range() function? One which takes the > lock and one which doesn't. Or just ignore the sparse false positive without complicating the code further.