On Thu, Nov 23, 2023 at 05:09:04PM +0800, zhangpeng (AS) wrote: > > > + pte_t *ptep = pte_offset_map_lock(vmf->vma->vm_mm, vmf->pmd, > > > + vmf->address, &vmf->ptl); > > > + if (ptep) { > > > + /* > > > + * Recheck pte with ptl locked as the pte can be cleared > > > + * temporarily during a read/modify/write update. > > > + */ > > > + if (unlikely(!pte_none(ptep_get(ptep)))) > > > + ret = VM_FAULT_NOPAGE; > > > + pte_unmap_unlock(ptep, vmf->ptl); > > > + if (unlikely(ret)) > > > + return ret; > > > + } > > > + > > Need to deal with ptep == NULL. Although that is high impossible. > > If ptep == NULL, we may just need to return VM_FAULT_SIGBUS. > I'll add it in the next version. no? wouldn't ptep being NULL mean that the ptep has been replaced with a PMD entry, and thus should return NOPAGE?