diff options
| author | Tony Luck <tony.luck@intel.com> | 2005-08-16 14:29:57 -0400 |
|---|---|---|
| committer | Tony Luck <tony.luck@intel.com> | 2005-08-16 14:29:57 -0400 |
| commit | f7001e8f1fa5369ee24f58255726a04a2019e4bd (patch) | |
| tree | 1bbdd233ad0cf2e0adb4eb04f22b7bfa59a43494 /drivers/char/mem.c | |
| parent | 85f265d887d2389376f1caa191e9682085feb76e (diff) | |
| parent | cf59001235c5a36f3e3701bd593a78cf955a4242 (diff) | |
Auto-update from upstream
Diffstat (limited to 'drivers/char/mem.c')
| -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 42187381506b..850a78c9c4bc 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) | |||
| 261 | 261 | ||
| 262 | static int mmap_kmem(struct file * file, struct vm_area_struct * vma) | 262 | static int mmap_kmem(struct file * file, struct vm_area_struct * vma) |
| 263 | { | 263 | { |
| 264 | unsigned long long val; | 264 | unsigned long pfn; |
| 265 | |||
| 266 | /* Turn a kernel-virtual address into a physical page frame */ | ||
| 267 | pfn = __pa((u64)vma->vm_pgoff << PAGE_SHIFT) >> PAGE_SHIFT; | ||
| 268 | |||
| 265 | /* | 269 | /* |
| 266 | * RED-PEN: on some architectures there is more mapped memory | 270 | * RED-PEN: on some architectures there is more mapped memory |
| 267 | * than available in mem_map which pfn_valid checks | 271 | * 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) | |||
| 269 | * | 273 | * |
| 270 | * RED-PEN: vmalloc is not supported right now. | 274 | * RED-PEN: vmalloc is not supported right now. |
| 271 | */ | 275 | */ |
| 272 | if (!pfn_valid(vma->vm_pgoff)) | 276 | if (!pfn_valid(pfn)) |
| 273 | return -EIO; | 277 | return -EIO; |
| 274 | val = (u64)vma->vm_pgoff << PAGE_SHIFT; | 278 | |
| 275 | vma->vm_pgoff = __pa(val) >> PAGE_SHIFT; | 279 | vma->vm_pgoff = pfn; |
| 276 | return mmap_mem(file, vma); | 280 | return mmap_mem(file, vma); |
| 277 | } | 281 | } |
| 278 | 282 | ||
