Miaohe Lin <linmiaohe@xxxxxxxxxx> writes: > The non_swap_entry() was used for working with VMA based swap readahead > via commit ec560175c0b6 ("mm, swap: VMA based swap readahead"). At that > time, the non_swap_entry() checking is necessary because the function is > called before checking that in do_swap_page(). Then it's moved to > swap_ra_info() since commit eaf649ebc3ac ("mm: swap: clean up swap > readahead"). After that, the non_swap_entry() checking is unnecessary, > because swap_ra_info() is called after non_swap_entry() has been checked > already. The resulting code is confusing as the non_swap_entry() check > looks racy now because while we released the pte lock, somebody else might > have faulted in this pte. So we should check whether it's swap pte first > to guard against such race or swap_type will be unexpected. But the race > isn't important because it will not cause problem. We would have enough > checking when we really operate the PTE entries later. So we remove the > non_swap_entry() check here to avoid confusion. > > Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> Reviewed-by: "Huang, Ying" <ying.huang@xxxxxxxxx> Best Regards, Huang, Ying > --- > mm/swap_state.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/mm/swap_state.c b/mm/swap_state.c > index 272ea2108c9d..df5405384520 100644 > --- a/mm/swap_state.c > +++ b/mm/swap_state.c > @@ -721,7 +721,6 @@ static void swap_ra_info(struct vm_fault *vmf, > { > struct vm_area_struct *vma = vmf->vma; > unsigned long ra_val; > - swp_entry_t entry; > unsigned long faddr, pfn, fpfn; > unsigned long start, end; > pte_t *pte, *orig_pte; > @@ -739,11 +738,6 @@ static void swap_ra_info(struct vm_fault *vmf, > > faddr = vmf->address; > orig_pte = pte = pte_offset_map(vmf->pmd, faddr); > - entry = pte_to_swp_entry(*pte); > - if ((unlikely(non_swap_entry(entry)))) { > - pte_unmap(orig_pte); > - return; > - } > > fpfn = PFN_DOWN(faddr); > ra_val = GET_SWAP_RA_VAL(vma);