Messages in this thread | | | Subject | Re: [git pull] x86 fix | From | Harvey Harrison <> | Date | Sat, 26 Apr 2008 13:15:36 -0700 |
| |
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
| |