@@ -1658,14 +1658,28 @@ static int insert_pfn(struct vm_area_struct *vma, unsigned long addr, if (!pte) goto out; retval = -EBUSY;
- if (!pte_none(*pte))
goto out_unlock;
- if (!pte_none(*pte)) {
if (mkwrite) {
if (WARN_ON_ONCE(pte_pfn(*pte) != pfn_t_to_pfn(pfn)))
Is the WARN_ON_ONCE() really appropriate here? Your testcase with private mappings has triggered this situation if I'm right...
Otherwise the patch looks good to me.
Honza