On Fri, Oct 26, 2018 at 02:38:44PM -0700, Sai Praneeth Prakhya wrote:
> +int kernel_unmap_pages_in_pgd(pgd_t *pgd, unsigned long address,
> +                           unsigned long numpages)
> +{
> +     int retval;
> +
> +     /*
> +      * The typical sequence for unmapping is to find a pte through
> +      * lookup_address_in_pgd() (ideally, it should never return NULL because
> +      * the address is already mapped) and change it's protections.
> +      * As pfn is the *target* of a mapping, it's not useful while unmapping.
> +      */
> +     struct cpa_data cpa = {
> +             .vaddr          = &address,
> +             .pgd            = pgd,
> +             .numpages       = numpages,
> +             .mask_set       = __pgprot(0),
> +             .mask_clr       = __pgprot(_PAGE_PRESENT | _PAGE_RW),
> +             .flags          = 0,
> +     };
> +
> +     retval = __change_page_attr_set_clr(&cpa, 0);
> +     __flush_tlb_all();

How is that not a TLB invalidation bug ?

> +
> +     return retval;
> +}

Reply via email to