diff options
| author | Geert Uytterhoeven <geert@linux-m68k.org> | 2013-06-09 20:12:42 +0200 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2016-08-26 20:45:16 +0200 |
| commit | c8aef484bde44e5edba36227bd1a67b6e595ea46 (patch) | |
| tree | 2d8845fc8bb478ccc428b3d1ccf40146dd98d415 /arch/sparc/crypto/des_glue.c | |
| parent | 5fccccefd53b0fb4feacaef9292b744c2fea6fe0 (diff) | |
m68k/uaccess: Fix asm constraints for userspace access
commit 631d8b674f5f8235e9cb7e628b0fe9e5200e3158 upstream.
When compiling a MMU kernel with CPU_HAS_ADDRESS_SPACES=n (e.g. "MMU=y
allnoconfig": "echo CONFIG_MMU=y > allno.config && make KCONFIG_ALLCONFIG=1
allnoconfig"), we use plain "move" instead of "moves", and I got:
CC arch/m68k/lib/uaccess.o
{standard input}: Assembler messages:
{standard input}:47: Error: operands mismatch -- statement `move.b %a0,(%a1)' ignored
This happens because plain "move" doesn't support byte transfers between
memory and address registers, while "moves" does.
Fix the asm constraints for __generic_copy_from_user(),
__generic_copy_to_user(), and __clear_user() to only use data registers
when accessing userspace.
Also, relax the asm constraints for 16-bit userspace accesses in
__put_user() and __get_user(), as both "move" and "moves" do support
such transfers between memory and address registers.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stefan Guendhoer <stefan@guendhoer.com>
Diffstat (limited to 'arch/sparc/crypto/des_glue.c')
0 files changed, 0 insertions, 0 deletions
