Commit 39ade048 authored by Fabio M. De Francesco's avatar Fabio M. De Francesco Committed by David Sterba

highmem: Make __kunmap_{local,atomic}() take const void pointer

__kunmap_ {local,atomic}() currently take pointers to void. However, this
is semantically incorrect, since these functions do not change the memory
their arguments point to.

Therefore, make this semantics explicit by modifying the
__kunmap_{local,atomic}() prototypes to take pointers to const void.

As a side effect, compilers may produce more efficient code.
Acked-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Acked-by: Helge Deller <deller@gmx.de>  # parisc
Suggested-by: default avatarDavid Sterba <dsterba@suse.cz>
Suggested-by: default avatarIra Weiny <ira.weiny@intel.com>
Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarFabio M. De Francesco <fmdefrancesco@gmail.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent ac5e6669
...@@ -22,7 +22,7 @@ void flush_kernel_icache_range_asm(unsigned long, unsigned long); ...@@ -22,7 +22,7 @@ void flush_kernel_icache_range_asm(unsigned long, unsigned long);
void flush_user_dcache_range_asm(unsigned long, unsigned long); void flush_user_dcache_range_asm(unsigned long, unsigned long);
void flush_kernel_dcache_range_asm(unsigned long, unsigned long); void flush_kernel_dcache_range_asm(unsigned long, unsigned long);
void purge_kernel_dcache_range_asm(unsigned long, unsigned long); void purge_kernel_dcache_range_asm(unsigned long, unsigned long);
void flush_kernel_dcache_page_asm(void *); void flush_kernel_dcache_page_asm(const void *addr);
void flush_kernel_icache_page(void *); void flush_kernel_icache_page(void *);
/* Cache flush operations */ /* Cache flush operations */
...@@ -31,7 +31,7 @@ void flush_cache_all_local(void); ...@@ -31,7 +31,7 @@ void flush_cache_all_local(void);
void flush_cache_all(void); void flush_cache_all(void);
void flush_cache_mm(struct mm_struct *mm); void flush_cache_mm(struct mm_struct *mm);
void flush_kernel_dcache_page_addr(void *addr); void flush_kernel_dcache_page_addr(const void *addr);
#define flush_kernel_dcache_range(start,size) \ #define flush_kernel_dcache_range(start,size) \
flush_kernel_dcache_range_asm((start), (start)+(size)); flush_kernel_dcache_range_asm((start), (start)+(size));
...@@ -75,7 +75,7 @@ void flush_dcache_page_asm(unsigned long phys_addr, unsigned long vaddr); ...@@ -75,7 +75,7 @@ void flush_dcache_page_asm(unsigned long phys_addr, unsigned long vaddr);
void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr); void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr);
#define ARCH_HAS_FLUSH_ON_KUNMAP #define ARCH_HAS_FLUSH_ON_KUNMAP
static inline void kunmap_flush_on_unmap(void *addr) static inline void kunmap_flush_on_unmap(const void *addr)
{ {
flush_kernel_dcache_page_addr(addr); flush_kernel_dcache_page_addr(addr);
} }
......
...@@ -549,7 +549,7 @@ extern void purge_kernel_dcache_page_asm(unsigned long); ...@@ -549,7 +549,7 @@ extern void purge_kernel_dcache_page_asm(unsigned long);
extern void clear_user_page_asm(void *, unsigned long); extern void clear_user_page_asm(void *, unsigned long);
extern void copy_user_page_asm(void *, void *, unsigned long); extern void copy_user_page_asm(void *, void *, unsigned long);
void flush_kernel_dcache_page_addr(void *addr) void flush_kernel_dcache_page_addr(const void *addr)
{ {
unsigned long flags; unsigned long flags;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#ifdef CONFIG_KMAP_LOCAL #ifdef CONFIG_KMAP_LOCAL
void *__kmap_local_pfn_prot(unsigned long pfn, pgprot_t prot); void *__kmap_local_pfn_prot(unsigned long pfn, pgprot_t prot);
void *__kmap_local_page_prot(struct page *page, pgprot_t prot); void *__kmap_local_page_prot(struct page *page, pgprot_t prot);
void kunmap_local_indexed(void *vaddr); void kunmap_local_indexed(const void *vaddr);
void kmap_local_fork(struct task_struct *tsk); void kmap_local_fork(struct task_struct *tsk);
void __kmap_local_sched_out(void); void __kmap_local_sched_out(void);
void __kmap_local_sched_in(void); void __kmap_local_sched_in(void);
...@@ -89,7 +89,7 @@ static inline void *kmap_local_pfn(unsigned long pfn) ...@@ -89,7 +89,7 @@ static inline void *kmap_local_pfn(unsigned long pfn)
return __kmap_local_pfn_prot(pfn, kmap_prot); return __kmap_local_pfn_prot(pfn, kmap_prot);
} }
static inline void __kunmap_local(void *vaddr) static inline void __kunmap_local(const void *vaddr)
{ {
kunmap_local_indexed(vaddr); kunmap_local_indexed(vaddr);
} }
...@@ -121,7 +121,7 @@ static inline void *kmap_atomic_pfn(unsigned long pfn) ...@@ -121,7 +121,7 @@ static inline void *kmap_atomic_pfn(unsigned long pfn)
return __kmap_local_pfn_prot(pfn, kmap_prot); return __kmap_local_pfn_prot(pfn, kmap_prot);
} }
static inline void __kunmap_atomic(void *addr) static inline void __kunmap_atomic(const void *addr)
{ {
kunmap_local_indexed(addr); kunmap_local_indexed(addr);
pagefault_enable(); pagefault_enable();
...@@ -197,7 +197,7 @@ static inline void *kmap_local_pfn(unsigned long pfn) ...@@ -197,7 +197,7 @@ static inline void *kmap_local_pfn(unsigned long pfn)
return kmap_local_page(pfn_to_page(pfn)); return kmap_local_page(pfn_to_page(pfn));
} }
static inline void __kunmap_local(void *addr) static inline void __kunmap_local(const void *addr)
{ {
#ifdef ARCH_HAS_FLUSH_ON_KUNMAP #ifdef ARCH_HAS_FLUSH_ON_KUNMAP
kunmap_flush_on_unmap(addr); kunmap_flush_on_unmap(addr);
...@@ -224,7 +224,7 @@ static inline void *kmap_atomic_pfn(unsigned long pfn) ...@@ -224,7 +224,7 @@ static inline void *kmap_atomic_pfn(unsigned long pfn)
return kmap_atomic(pfn_to_page(pfn)); return kmap_atomic(pfn_to_page(pfn));
} }
static inline void __kunmap_atomic(void *addr) static inline void __kunmap_atomic(const void *addr)
{ {
#ifdef ARCH_HAS_FLUSH_ON_KUNMAP #ifdef ARCH_HAS_FLUSH_ON_KUNMAP
kunmap_flush_on_unmap(addr); kunmap_flush_on_unmap(addr);
......
...@@ -561,7 +561,7 @@ void *__kmap_local_page_prot(struct page *page, pgprot_t prot) ...@@ -561,7 +561,7 @@ void *__kmap_local_page_prot(struct page *page, pgprot_t prot)
} }
EXPORT_SYMBOL(__kmap_local_page_prot); EXPORT_SYMBOL(__kmap_local_page_prot);
void kunmap_local_indexed(void *vaddr) void kunmap_local_indexed(const void *vaddr)
{ {
unsigned long addr = (unsigned long) vaddr & PAGE_MASK; unsigned long addr = (unsigned long) vaddr & PAGE_MASK;
pte_t *kmap_pte; pte_t *kmap_pte;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment