diff options
Diffstat (limited to 'drivers/char/mem.c')
-rw-r--r-- | drivers/char/mem.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 524b707894ef..4c58333b4257 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c | |||
@@ -84,9 +84,12 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) | |||
84 | } | 84 | } |
85 | #endif | 85 | #endif |
86 | 86 | ||
87 | void __weak unxlate_dev_mem_ptr(unsigned long phys, void *addr) | 87 | #ifndef unxlate_dev_mem_ptr |
88 | #define unxlate_dev_mem_ptr unxlate_dev_mem_ptr | ||
89 | void __weak unxlate_dev_mem_ptr(phys_addr_t phys, void *addr) | ||
88 | { | 90 | { |
89 | } | 91 | } |
92 | #endif | ||
90 | 93 | ||
91 | /* | 94 | /* |
92 | * This funcion reads the *physical* memory. The f_pos points directly to the | 95 | * This funcion reads the *physical* memory. The f_pos points directly to the |
@@ -97,7 +100,7 @@ static ssize_t read_mem(struct file *file, char __user *buf, | |||
97 | { | 100 | { |
98 | phys_addr_t p = *ppos; | 101 | phys_addr_t p = *ppos; |
99 | ssize_t read, sz; | 102 | ssize_t read, sz; |
100 | char *ptr; | 103 | void *ptr; |
101 | 104 | ||
102 | if (p != *ppos) | 105 | if (p != *ppos) |
103 | return 0; | 106 | return 0; |
@@ -400,7 +403,7 @@ static ssize_t read_kmem(struct file *file, char __user *buf, | |||
400 | * uncached, then it must also be accessed uncached | 403 | * uncached, then it must also be accessed uncached |
401 | * by the kernel or data corruption may occur | 404 | * by the kernel or data corruption may occur |
402 | */ | 405 | */ |
403 | kbuf = xlate_dev_kmem_ptr((char *)p); | 406 | kbuf = xlate_dev_kmem_ptr((void *)p); |
404 | 407 | ||
405 | if (copy_to_user(buf, kbuf, sz)) | 408 | if (copy_to_user(buf, kbuf, sz)) |
406 | return -EFAULT; | 409 | return -EFAULT; |
@@ -461,7 +464,7 @@ static ssize_t do_write_kmem(unsigned long p, const char __user *buf, | |||
461 | #endif | 464 | #endif |
462 | 465 | ||
463 | while (count > 0) { | 466 | while (count > 0) { |
464 | char *ptr; | 467 | void *ptr; |
465 | 468 | ||
466 | sz = size_inside_page(p, count); | 469 | sz = size_inside_page(p, count); |
467 | 470 | ||
@@ -470,7 +473,7 @@ static ssize_t do_write_kmem(unsigned long p, const char __user *buf, | |||
470 | * it must also be accessed uncached by the kernel or data | 473 | * it must also be accessed uncached by the kernel or data |
471 | * corruption may occur. | 474 | * corruption may occur. |
472 | */ | 475 | */ |
473 | ptr = xlate_dev_kmem_ptr((char *)p); | 476 | ptr = xlate_dev_kmem_ptr((void *)p); |
474 | 477 | ||
475 | copied = copy_from_user(ptr, buf, sz); | 478 | copied = copy_from_user(ptr, buf, sz); |
476 | if (copied) { | 479 | if (copied) { |