Commit 59766edc79da0583eff7d0a9e1049b0d3c5676b0
Exists in
master
and in
7 other branches
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-mn10300
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-mn10300: MN10300: atomic_read() should ensure it emits a load MN10300: The SMP_ICACHE_INV_FLUSH_RANGE IPI command does not exist MN10300: Proper use of macros get_user() in the case of incremented pointers
Showing 3 changed files Side-by-side Diff
arch/mn10300/include/asm/atomic.h
... | ... | @@ -139,7 +139,7 @@ |
139 | 139 | * Atomically reads the value of @v. Note that the guaranteed |
140 | 140 | * useful range of an atomic_t is only 24 bits. |
141 | 141 | */ |
142 | -#define atomic_read(v) ((v)->counter) | |
142 | +#define atomic_read(v) (ACCESS_ONCE((v)->counter)) | |
143 | 143 | |
144 | 144 | /** |
145 | 145 | * atomic_set - set atomic variable |
arch/mn10300/include/asm/uaccess.h
... | ... | @@ -160,9 +160,10 @@ |
160 | 160 | |
161 | 161 | #define __get_user_check(x, ptr, size) \ |
162 | 162 | ({ \ |
163 | + const __typeof__(ptr) __guc_ptr = (ptr); \ | |
163 | 164 | int _e; \ |
164 | - if (likely(__access_ok((unsigned long) (ptr), (size)))) \ | |
165 | - _e = __get_user_nocheck((x), (ptr), (size)); \ | |
165 | + if (likely(__access_ok((unsigned long) __guc_ptr, (size)))) \ | |
166 | + _e = __get_user_nocheck((x), __guc_ptr, (size)); \ | |
166 | 167 | else { \ |
167 | 168 | _e = -EFAULT; \ |
168 | 169 | (x) = (__typeof__(x))0; \ |
arch/mn10300/mm/cache-inv-icache.c
... | ... | @@ -69,7 +69,7 @@ |
69 | 69 | |
70 | 70 | /* invalidate the icache coverage on that region */ |
71 | 71 | mn10300_local_icache_inv_range2(addr + off, size); |
72 | - smp_cache_call(SMP_ICACHE_INV_FLUSH_RANGE, start, end); | |
72 | + smp_cache_call(SMP_ICACHE_INV_RANGE, start, end); | |
73 | 73 | } |
74 | 74 | |
75 | 75 | /** |
... | ... | @@ -101,7 +101,7 @@ |
101 | 101 | * directly */ |
102 | 102 | start_page = (start >= 0x80000000UL) ? start : 0x80000000UL; |
103 | 103 | mn10300_icache_inv_range(start_page, end); |
104 | - smp_cache_call(SMP_ICACHE_INV_FLUSH_RANGE, start, end); | |
104 | + smp_cache_call(SMP_ICACHE_INV_RANGE, start, end); | |
105 | 105 | if (start_page == start) |
106 | 106 | goto done; |
107 | 107 | end = start_page; |