Commit fe45736f4134b9656c656ac5e15b915192f2704a
Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
Pull ARM fixes from Russell King: "The usual random collection of relatively small ARM fixes" * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: ARM: 8063/1: bL_switcher: fix individual online status reporting of removed CPUs ARM: 8064/1: fix v7-M signal return ARM: 8057/1: amba: Add Qualcomm vendor ID. ARM: 8052/1: unwind: Fix handling of "Pop r4-r[4+nnn],r14" opcode ARM: 8051/1: put_user: fix possible data corruption in put_user ARM: 8048/1: fix v7-M setup stack location
Showing 6 changed files Side-by-side Diff
... | ... | @@ -433,8 +433,12 @@ |
433 | 433 | { |
434 | 434 | int i; |
435 | 435 | |
436 | - for_each_cpu(i, &bL_switcher_removed_logical_cpus) | |
437 | - cpu_up(i); | |
436 | + for_each_cpu(i, &bL_switcher_removed_logical_cpus) { | |
437 | + struct device *cpu_dev = get_cpu_device(i); | |
438 | + int ret = device_online(cpu_dev); | |
439 | + if (ret) | |
440 | + dev_err(cpu_dev, "switcher: unable to restore CPU\n"); | |
441 | + } | |
438 | 442 | } |
439 | 443 | |
440 | 444 | static int bL_switcher_halve_cpus(void) |
... | ... | @@ -521,7 +525,7 @@ |
521 | 525 | continue; |
522 | 526 | } |
523 | 527 | |
524 | - ret = cpu_down(i); | |
528 | + ret = device_offline(get_cpu_device(i)); | |
525 | 529 | if (ret) { |
526 | 530 | bL_switcher_restore_cpus(); |
527 | 531 | return ret; |
... | ... | @@ -171,8 +171,9 @@ |
171 | 171 | #define __put_user_check(x,p) \ |
172 | 172 | ({ \ |
173 | 173 | unsigned long __limit = current_thread_info()->addr_limit - 1; \ |
174 | + const typeof(*(p)) __user *__tmp_p = (p); \ | |
174 | 175 | register const typeof(*(p)) __r2 asm("r2") = (x); \ |
175 | - register const typeof(*(p)) __user *__p asm("r0") = (p);\ | |
176 | + register const typeof(*(p)) __user *__p asm("r0") = __tmp_p; \ | |
176 | 177 | register unsigned long __l asm("r1") = __limit; \ |
177 | 178 | register int __e asm("r0"); \ |
178 | 179 | switch (sizeof(*(__p))) { \ |
... | ... | @@ -132,6 +132,10 @@ |
132 | 132 | orrne r5, V7M_xPSR_FRAMEPTRALIGN |
133 | 133 | biceq r5, V7M_xPSR_FRAMEPTRALIGN |
134 | 134 | |
135 | + @ ensure bit 0 is cleared in the PC, otherwise behaviour is | |
136 | + @ unpredictable | |
137 | + bic r4, #1 | |
138 | + | |
135 | 139 | @ write basic exception frame |
136 | 140 | stmdb r2!, {r1, r3-r5} |
137 | 141 | ldmia sp, {r1, r3-r5} |
... | ... | @@ -123,6 +123,11 @@ |
123 | 123 | mov pc, lr |
124 | 124 | ENDPROC(__v7m_setup) |
125 | 125 | |
126 | + .align 2 | |
127 | +__v7m_setup_stack: | |
128 | + .space 4 * 8 @ 8 registers | |
129 | +__v7m_setup_stack_top: | |
130 | + | |
126 | 131 | define_processor_functions v7m, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1 |
127 | 132 | |
128 | 133 | .section ".rodata" |
... | ... | @@ -151,8 +156,4 @@ |
151 | 156 | .long 0 @ proc_info_list.user |
152 | 157 | .long nop_cache_fns @ proc_info_list.cache |
153 | 158 | .size __v7m_proc_info, . - __v7m_proc_info |
154 | - | |
155 | -__v7m_setup_stack: | |
156 | - .space 4 * 8 @ 8 registers | |
157 | -__v7m_setup_stack_top: |
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24
-
mentioned in commit 1cec24