Its actually a very simple rule. The sequence must be:
- flush cache for area
- change pte entries in area
- flush tlb for area
Anything else is just buggy, and may very well be racy. Think about the
race when you flush the tlb entry before changing the pte.
Rather than creating a new interface that's only useful for 10% of the
cases, I'd prefer to keep the rule personally. The smaller the number
of functions each with their own particular set of behaviours doing
almost the same job, the less chance of getting the wrong function.
And, IMHO, the easier it is to audit the code.
grep -4 ptep_get_and_clear mm/*.c
vs
"Is this the right function here?"
PS, I see one place where "ptep_get_and_clear_and_flush" would be useful
out of 6 uses.
-- Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux http://www.arm.linux.org.uk/personal/aboutme.html- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/