On 09/07/2018 08:01 AM, Thomas Gleixner wrote:
> +static inline pgprot_t static_protections(pgprot_t prot, unsigned long 
> address,
> +                                       unsigned long pfn)
> +{
> +     pgprotval_t forbidden;
> +
> +     /* Operate on the virtual address */
> +     forbidden  = protect_kernel_text(address);
> +     forbidden |= protect_kernel_text_ro(address);
> +
> +     /* Check the PFN directly */
> +     forbidden |= protect_pci_bios(pfn);
> +     forbidden |= protect_rodata(pfn);
>  
> -     return prot;
> +     return __pgprot(pgprot_val(prot) & ~forbidden);
>  }

Wow, that's quite an improvement, especially separating the vaddr vs.
paddr checks.

Reply via email to