Re: [PATCH 4/6] mm: move flush in madvise_free_pte_range()

From: Hillf Danton
Date: Fri Jul 01 2016 - 04:38:38 EST


>
> From: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
>
> I think this code is OK and does not *need* to be patched. We
> are just rewriting the PTE without the Accessed and Dirty bits.
> The hardware could come along and set them at any time with or
> without the erratum that this series addresses
>
> But this does make the ptep_get_and_clear_full() and
> tlb_remove_tlb_entry() calls here more consistent with the other
> places they are used together and look *obviously* the same
> between call-sites.
>
> Signed-off-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
> Cc: Minchan Kim <minchan@xxxxxxxxxx>
> ---
>
> b/mm/madvise.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff -puN mm/madvise.c~knl-leak-40-madvise_free_pte_range-move-flush mm/madvise.c
> --- a/mm/madvise.c~knl-leak-40-madvise_free_pte_range-move-flush 2016-06-30 17:10:42.557246755 -0700
> +++ b/mm/madvise.c 2016-06-30 17:10:42.561246936 -0700
> @@ -369,13 +369,13 @@ static int madvise_free_pte_range(pmd_t
> */
> ptent = ptep_get_and_clear_full(mm, addr, pte,
> tlb->fullmm);
> + tlb_remove_tlb_entry(tlb, pte, addr);
>

Then the current comment has to be updated, no?-/

thanks
Hillf
> ptent = pte_mkold(ptent);
> ptent = pte_mkclean(ptent);
> set_pte_at(mm, addr, pte, ptent);
> if (PageActive(page))
> deactivate_page(page);
> - tlb_remove_tlb_entry(tlb, pte, addr);
> }
> }
> out:
> _
>