diff options
author | Len Brown <len.brown@intel.com> | 2005-08-15 20:07:26 (GMT) |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2005-08-15 20:07:26 (GMT) |
commit | 09d92002718edf8ef284ec3726247acc83efbbe0 (patch) | |
tree | 54fe60e08833214565562ce0e9cefa21c92f95e3 /drivers/char | |
parent | cb220c1af49644786944c549518b491d4c654030 (diff) | |
parent | 3edea4833a1efcd43e1dff082bc8001fdfe74b34 (diff) | |
download | linux-fsl-qoriq-09d92002718edf8ef284ec3726247acc83efbbe0.tar.xz |
Merge from-linus to-akpm
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/mem.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 4218738..850a78c 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -261,7 +261,11 @@ static int mmap_mem(struct file * file, struct vm_area_struct * vma) static int mmap_kmem(struct file * file, struct vm_area_struct * vma) { - unsigned long long val; + unsigned long pfn; + + /* Turn a kernel-virtual address into a physical page frame */ + pfn = __pa((u64)vma->vm_pgoff << PAGE_SHIFT) >> PAGE_SHIFT; + /* * RED-PEN: on some architectures there is more mapped memory * than available in mem_map which pfn_valid checks @@ -269,10 +273,10 @@ static int mmap_kmem(struct file * file, struct vm_area_struct * vma) * * RED-PEN: vmalloc is not supported right now. */ - if (!pfn_valid(vma->vm_pgoff)) + if (!pfn_valid(pfn)) return -EIO; - val = (u64)vma->vm_pgoff << PAGE_SHIFT; - vma->vm_pgoff = __pa(val) >> PAGE_SHIFT; + + vma->vm_pgoff = pfn; return mmap_mem(file, vma); } |