Skip to content

Commit 59766ed

Browse files
committed
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
2 parents 2990821 + af79420 commit 59766ed

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

arch/mn10300/include/asm/atomic.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ static inline unsigned long __cmpxchg(volatile unsigned long *m,
139139
* Atomically reads the value of @v. Note that the guaranteed
140140
* useful range of an atomic_t is only 24 bits.
141141
*/
142-
#define atomic_read(v) ((v)->counter)
142+
#define atomic_read(v) (ACCESS_ONCE((v)->counter))
143143

144144
/**
145145
* atomic_set - set atomic variable

arch/mn10300/include/asm/uaccess.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,10 @@ struct __large_struct { unsigned long buf[100]; };
160160

161161
#define __get_user_check(x, ptr, size) \
162162
({ \
163+
const __typeof__(ptr) __guc_ptr = (ptr); \
163164
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)); \
166167
else { \
167168
_e = -EFAULT; \
168169
(x) = (__typeof__(x))0; \

arch/mn10300/mm/cache-inv-icache.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ static void flush_icache_page_range(unsigned long start, unsigned long end)
6969

7070
/* invalidate the icache coverage on that region */
7171
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);
7373
}
7474

7575
/**
@@ -101,7 +101,7 @@ void flush_icache_range(unsigned long start, unsigned long end)
101101
* directly */
102102
start_page = (start >= 0x80000000UL) ? start : 0x80000000UL;
103103
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);
105105
if (start_page == start)
106106
goto done;
107107
end = start_page;

0 commit comments

Comments
 (0)