Anders Roxell
966866892c
arm64: kprobe: make page to RO mode when allocate it
...
Commit 1404d6f13e ("arm64: dump: Add checking for writable and exectuable pages")
has successfully identified code that leaves a page with W+X
permissions.
[ 3.245140] arm64/mm: Found insecure W+X mapping at address (____ptrval____)/0xffff000000d90000
[ 3.245771] WARNING: CPU: 0 PID: 1 at ../arch/arm64/mm/dump.c:232 note_page+0x410/0x420
[ 3.246141] Modules linked in:
[ 3.246653] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.0-rc5-next-20180928-00001-ge70ae259b853-dirty #62
[ 3.247008] Hardware name: linux,dummy-virt (DT)
[ 3.247347] pstate: 80000005 (Nzcv daif -PAN -UAO)
[ 3.247623] pc : note_page+0x410/0x420
[ 3.247898] lr : note_page+0x410/0x420
[ 3.248071] sp : ffff00000804bcd0
[ 3.248254] x29: ffff00000804bcd0 x28: ffff000009274000
[ 3.248578] x27: ffff00000921a000 x26: ffff80007dfff000
[ 3.248845] x25: ffff0000093f5000 x24: ffff000009526f6a
[ 3.249109] x23: 0000000000000004 x22: ffff000000d91000
[ 3.249396] x21: ffff000000d90000 x20: 0000000000000000
[ 3.249661] x19: ffff00000804bde8 x18: 0000000000000400
[ 3.249924] x17: 0000000000000000 x16: 0000000000000000
[ 3.250271] x15: ffffffffffffffff x14: 295f5f5f5f6c6176
[ 3.250594] x13: 7274705f5f5f5f28 x12: 2073736572646461
[ 3.250941] x11: 20746120676e6970 x10: 70616d20582b5720
[ 3.251252] x9 : 6572756365736e69 x8 : 3039643030303030
[ 3.251519] x7 : 306666666678302f x6 : ffff0000095467b2
[ 3.251802] x5 : 0000000000000000 x4 : 0000000000000000
[ 3.252060] x3 : 0000000000000000 x2 : ffffffffffffffff
[ 3.252323] x1 : 4d151327adc50b00 x0 : 0000000000000000
[ 3.252664] Call trace:
[ 3.252953] note_page+0x410/0x420
[ 3.253186] walk_pgd+0x12c/0x238
[ 3.253417] ptdump_check_wx+0x68/0xf8
[ 3.253637] mark_rodata_ro+0x68/0x98
[ 3.253847] kernel_init+0x38/0x160
[ 3.254103] ret_from_fork+0x10/0x18
kprobes allocates a writable executable page with module_alloc() in
order to store executable code.
Reworked to that when allocate a page it sets mode RO. Inspired by
commit 63fef14fc9 ("kprobes/x86: Make insn buffer always ROX and use text_poke()").
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Will Deacon <will.deacon@arm.com>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Reviewed-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
[catalin.marinas@arm.com: removed unnecessary casts]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2018-11-02 18:15:07 +00:00
arch
arm64: kprobe: make page to RO mode when allocate it
2018-11-02 18:15:07 +00:00
block
block: bsg: move atomic_t ref_count variable to refcount API
2018-08-27 19:17:02 -06:00
certs
export.h: remove VMLINUX_SYMBOL() and VMLINUX_SYMBOL_STR()
2018-08-22 23:21:44 +09:00
crypto
DMAengine updates for v4.19-rc1
2018-08-18 15:55:59 -07:00
Documentation
Documentation/arm64: HugeTLB page implementation
2018-10-10 18:08:36 +01:00
drivers
arm64: arch_timer: Add workaround for ARM erratum 1188873
2018-10-01 13:38:47 +01:00
firmware
fs
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2018-09-02 09:41:45 -07:00
include
signal: Introduce COMPAT_SIGMINSTKSZ for use in compat_sys_sigaltstack
2018-10-01 11:43:55 +01:00
init
Kbuild updates for v4.19 (2nd)
2018-08-25 13:40:38 -07:00
ipc
ipc/util.c: update return value of ipc_getref from int to bool
2018-08-22 10:52:52 -07:00
kernel
signal: Introduce COMPAT_SIGMINSTKSZ for use in compat_sys_sigaltstack
2018-10-01 11:43:55 +01:00
lib
lib/crc32: make core crc32() routines weak so they can be overridden
2018-09-10 16:09:27 +01:00
LICENSES
mm
mm/memory: Move mmu_gather and TLB invalidation code into its own file
2018-09-07 15:19:25 +01:00
net
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2018-09-02 09:41:45 -07:00
samples
samples/bpf: all XDP samples should unload xdp/bpf prog on SIGTERM
2018-08-16 21:55:32 +02:00
scripts
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2018-09-02 10:11:30 -07:00
security
+ Cleanups
2018-08-24 13:00:33 -07:00
sound
Merge branch 'akpm' (patches from Andrew)
2018-08-23 19:20:12 -07:00
tools
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2018-08-27 11:59:39 -07:00
usr
initramfs: move gen_initramfs_list.sh from scripts/ to usr/
2018-08-22 23:21:44 +09:00
virt
arm64: KVM: Enable Common Not Private translations
2018-09-18 12:03:34 +01:00
.clang-format
clang-format: Set IndentWrappedFunctionNames false
2018-08-01 18:38:51 +02:00
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
libnvdimm-for-4.19_misc
2018-08-25 18:13:10 -07:00
COPYING
CREDITS
9p: remove Ron Minnich from MAINTAINERS
2018-08-17 16:20:26 -07:00
Kbuild
Kconfig
kconfig: move the "Executable file formats" menu to fs/Kconfig.binfmt
2018-08-02 08:06:55 +09:00
MAINTAINERS
MAINTAINERS: fix bad sdei paths
2018-10-05 17:55:07 +01:00
Makefile
Linux 4.19-rc2
2018-09-02 14:37:30 -07:00
README