Ouch.
The patch looks obviously correct, to the point that I don't understand
how this bug happened in the first place. It seems to have been
introduced by Nick in d0217ac04ca6591841e5665f518e38064f4e65bd ("mm: fault
feedback #1") if I read it right.
So "do_nonlinear_fault()" would effectively end up unmapping the PTE
twice, right? And if I understand the problem right, this wasn't noticed
immediately, because it probably only matters on:
- CONFIG_HIGHPTE
*and*
- a filesystem that allows VM_NONLINEAR, which became very rare with
dirty accounting.
Correct?
Linus
-