diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-09-07 18:22:28 +0100 |
---|---|---|
committer | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2015-12-21 19:22:24 +0100 |
commit | c59f723a562f9539dfac68c1b306858e35a05cdd (patch) | |
tree | 445aadf76dce4b88d1ad58e9b153b7737b210b33 /arch/arm/include/asm/assembler.h | |
parent | bd826b68f05e721b8be8a8dbe8f556ed7eb4ae54 (diff) | |
download | kernel_samsung_smdk4412-c59f723a562f9539dfac68c1b306858e35a05cdd.zip kernel_samsung_smdk4412-c59f723a562f9539dfac68c1b306858e35a05cdd.tar.gz kernel_samsung_smdk4412-c59f723a562f9539dfac68c1b306858e35a05cdd.tar.bz2 |
ARM: 7527/1: uaccess: explicitly check __user pointer when !CPU_USE_DOMAINS
The {get,put}_user macros don't perform range checking on the provided
__user address when !CPU_HAS_DOMAINS.
This patch reworks the out-of-line assembly accessors to check the user
address against a specified limit, returning -EFAULT if is is out of
range.
[will: changed get_user register allocation to match put_user]
[rmk: fixed building on older ARM architectures]
CRs-Fixed: 504011
Reported-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Cc: stable@vger.kernel.org
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Git-commit: 8404663f81d212918ff85f493649a7991209fa04
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
Conflicts:
arch/arm/include/asm/assembler.h
arch/arm/lib/getuser.S
arch/arm/lib/putuser.S
Change-Id: I3818045a136fcdf72deb1371b132e090fd7ed643
Conflicts:
arch/arm/lib/getuser.S
arch/arm/lib/putuser.S
Diffstat (limited to 'arch/arm/include/asm/assembler.h')
-rw-r--r-- | arch/arm/include/asm/assembler.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 456649e..b7c5d5d 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -299,14 +299,6 @@ usracc ldr, \reg, \ptr, \inc, \cond, \rept, \abort .endm - .macro check_uaccess, addr:req, size:req, limit:req, tmp:req, bad:req -#ifndef CONFIG_CPU_USE_DOMAINS - adds \tmp, \addr, #\size - 1 - sbcccs \tmp, \tmp, \limit - bcs \bad -#endif - .endm - /* Utility macro for declaring string literals */ .macro string name:req, string .type \name , #object @@ -315,4 +307,12 @@ .size \name , . - \name .endm + .macro check_uaccess, addr:req, size:req, limit:req, tmp:req, bad:req +#ifndef CONFIG_CPU_USE_DOMAINS + adds \tmp, \addr, #\size - 1 + sbcccs \tmp, \tmp, \limit + bcs \bad +#endif + .endm + #endif /* __ASM_ASSEMBLER_H__ */ |