Re: [git pull] x86 fix

From: Harvey Harrison
Date: Sat Apr 26 2008 - 16:15:41 EST


On Sat, 2008-04-26 at 21:47 +0200, Ingo Molnar wrote:
> Linus, please pull this x86 fix from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86-fixes2.git for-linus
>
> Thanks,
>
> Ingo
>
> ------------------>
> Venki Pallipadi (1):
> x86, PAT: disable /dev/mem mmap RAM with PAT
>
> arch/x86/mm/pat.c | 31 +++++++++++++++++++++++++++++++
> 1 files changed, 31 insertions(+), 0 deletions(-)
>
> diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
> index 9851265..e7ca7fc 100644
> --- a/arch/x86/mm/pat.c
> +++ b/arch/x86/mm/pat.c
> @@ -16,6 +16,7 @@
> #include <asm/msr.h>
> #include <asm/tlbflush.h>
> #include <asm/processor.h>
> +#include <asm/page.h>
> #include <asm/pgtable.h>
> #include <asm/pat.h>
> #include <asm/e820.h>
> @@ -477,6 +478,33 @@ pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
> return vma_prot;
> }
>
> +#ifdef CONFIG_NONPROMISC_DEVMEM
> +/* This check is done in drivers/char/mem.c in case of NONPROMISC_DEVMEM*/
> +static inline int range_is_allowed(unsigned long pfn, unsigned long size)
> +{
> + return 1;
> +}
> +#else
> +static inline int range_is_allowed(unsigned long pfn, unsigned long size)

inline? Seems a bit big to me.

> +{
> + u64 from = ((u64)pfn) << PAGE_SHIFT;
> + u64 to = from + size;
> + u64 cursor = from;
> +
> + while (cursor < to) {
> + if (!devmem_is_allowed(pfn)) {
> + printk(KERN_INFO
> + "Program %s tried to access /dev/mem between %Lx->%Lx.\n",
> + current->comm, from, to);
> + return 0;
> + }
> + cursor += PAGE_SIZE;
> + pfn++;
> + }
> + return 1;
> +}
> +#endif /* CONFIG_NONPROMISC_DEVMEM */
> +

Cheers,

Harvey

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/