diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-14 18:20:39 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-14 18:20:39 -0400 |
| commit | 59766edc79da0583eff7d0a9e1049b0d3c5676b0 (patch) | |
| tree | 0a8261248b89c54667f7eeb367bbcddde5c694d4 | |
| parent | 2990821d0e38d2bfc556ad39d709b5f8a83c2ebd (diff) | |
| parent | af794206542e03d62138a107ee0ffb5e7d631881 (diff) | |
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
| -rw-r--r-- | arch/mn10300/include/asm/atomic.h | 2 | ||||
| -rw-r--r-- | arch/mn10300/include/asm/uaccess.h | 5 | ||||
| -rw-r--r-- | arch/mn10300/mm/cache-inv-icache.c | 4 |
3 files changed, 6 insertions, 5 deletions
diff --git a/arch/mn10300/include/asm/atomic.h b/arch/mn10300/include/asm/atomic.h index 92d2f9298e38..9d773a639513 100644 --- a/arch/mn10300/include/asm/atomic.h +++ b/arch/mn10300/include/asm/atomic.h | |||
| @@ -139,7 +139,7 @@ static inline unsigned long __cmpxchg(volatile unsigned long *m, | |||
| 139 | * Atomically reads the value of @v. Note that the guaranteed | 139 | * Atomically reads the value of @v. Note that the guaranteed |
| 140 | * useful range of an atomic_t is only 24 bits. | 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 | * atomic_set - set atomic variable | 145 | * atomic_set - set atomic variable |
diff --git a/arch/mn10300/include/asm/uaccess.h b/arch/mn10300/include/asm/uaccess.h index 679dee0bbd08..3d6e60dad9d9 100644 --- a/arch/mn10300/include/asm/uaccess.h +++ b/arch/mn10300/include/asm/uaccess.h | |||
| @@ -160,9 +160,10 @@ struct __large_struct { unsigned long buf[100]; }; | |||
| 160 | 160 | ||
| 161 | #define __get_user_check(x, ptr, size) \ | 161 | #define __get_user_check(x, ptr, size) \ |
| 162 | ({ \ | 162 | ({ \ |
| 163 | const __typeof__(ptr) __guc_ptr = (ptr); \ | ||
| 163 | int _e; \ | 164 | int _e; \ |
| 164 | if (likely(__access_ok((unsigned long) (ptr), (size)))) \ | 165 | if (likely(__access_ok((unsigned long) __guc_ptr, (size)))) \ |
| 165 | _e = __get_user_nocheck((x), (ptr), (size)); \ | 166 | _e = __get_user_nocheck((x), __guc_ptr, (size)); \ |
| 166 | else { \ | 167 | else { \ |
| 167 | _e = -EFAULT; \ | 168 | _e = -EFAULT; \ |
| 168 | (x) = (__typeof__(x))0; \ | 169 | (x) = (__typeof__(x))0; \ |
diff --git a/arch/mn10300/mm/cache-inv-icache.c b/arch/mn10300/mm/cache-inv-icache.c index a8933a60b2d4..a6b63dde603d 100644 --- a/arch/mn10300/mm/cache-inv-icache.c +++ b/arch/mn10300/mm/cache-inv-icache.c | |||
| @@ -69,7 +69,7 @@ static void flush_icache_page_range(unsigned long start, unsigned long end) | |||
| 69 | 69 | ||
| 70 | /* invalidate the icache coverage on that region */ | 70 | /* invalidate the icache coverage on that region */ |
| 71 | mn10300_local_icache_inv_range2(addr + off, size); | 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 @@ void flush_icache_range(unsigned long start, unsigned long end) | |||
| 101 | * directly */ | 101 | * directly */ |
| 102 | start_page = (start >= 0x80000000UL) ? start : 0x80000000UL; | 102 | start_page = (start >= 0x80000000UL) ? start : 0x80000000UL; |
| 103 | mn10300_icache_inv_range(start_page, end); | 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 | if (start_page == start) | 105 | if (start_page == start) |
| 106 | goto done; | 106 | goto done; |
| 107 | end = start_page; | 107 | end = start_page; |
