From: Russell King Date: Thu, 3 Sep 2015 14:28:37 +0000 (+0100) Subject: Merge branches 'cleanup', 'fixes', 'misc', 'omap-barrier' and 'uaccess' into for... X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=40d3f02851577da27b5cbb1538888301245ef1e7;p=linux.git Merge branches 'cleanup', 'fixes', 'misc', 'omap-barrier' and 'uaccess' into for-linus --- 40d3f02851577da27b5cbb1538888301245ef1e7 diff --cc arch/arm/Kconfig index a750c1425c3a6,1c5021002fe40,1bcda7cb2e040,a750c1425c3a6,e15d5ed4d5f16..3458828562873 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@@@@@ -1693,7 -1693,13 -1696,7 -1693,7 -1693,22 +1696,28 @@@@@@ config HIGHME config HIGHPTE bool "Allocate 2nd-level pagetables from highmem" depends on HIGHMEM + +++ help + +++ The VM uses one page of physical memory for each page table. + +++ For systems with a lot of processes, this can use a lot of + +++ precious low memory, eventually leading to low memory being + +++ consumed by page tables. Setting this option will allow + +++ user-space 2nd level page tables to reside in high memory. + ++ ++++ config CPU_SW_DOMAIN_PAN ++++ bool "Enable use of CPU domains to implement privileged no-access" ++++ depends on MMU && !ARM_LPAE ++++ default y ++++ help ++++ Increase kernel security by ensuring that normal kernel accesses ++++ are unable to access userspace addresses. This can help prevent ++++ use-after-free bugs becoming an exploitable privilege escalation ++++ by ensuring that magic values (such as LIST_POISON) will always ++++ fault when dereferenced. ++++ ++++ CPUs with low-vector mappings use a best-efforts implementation. ++++ Their lower 1MB needs to remain accessible for the vectors, but ++++ the remainder of userspace will become appropriately inaccessible. + config HW_PERF_EVENTS bool "Enable hardware performance counter support for perf events" depends on PERF_EVENTS diff --cc arch/arm/include/asm/uaccess.h index 4cf54ebe408af,74b17d09ef7aa,74b17d09ef7aa,74b17d09ef7aa,01bae13b2cea0..8cc85a4ebec20 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h @@@@@@ -379,11 -391,11 -391,11 -391,11 -429,12 +417,12 @@@@@@ do { case 8: __put_user_asm_dword(__pu_val, __pu_addr, err); break; \ default: __put_user_bad(); \ } \ ++++ uaccess_restore(__ua_flags); \ } while (0) ----#define __put_user_asm_byte(x, __pu_addr, err) \ ++++#define __put_user_asm(x, __pu_addr, err, instr) \ __asm__ __volatile__( \ ---- "1: " TUSER(strb) " %1,[%2],#0\n" \ ++++ "1: " TUSER(instr) " %1, [%2], #0\n" \ "2:\n" \ " .pushsection .text.fixup,\"ax\"\n" \ " .align 2\n" \ diff --cc arch/arm/mm/mmu.c index 6ca7d9aa896f4,870838a46d524,fb9e817d08bb8,6ca7d9aa896f4,a016de2480349..7cd15143a5077 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@@@@@ -1494,7 -1500,8 -1567,8 -1494,7 -1494,7 +1573,9 @@@@@@ void __init paging_init(const struct ma build_mem_type_table(); prepare_page_table(); map_lowmem(); + +++ memblock_set_current_limit(arm_lowmem_limit); dma_contiguous_remap(); ++ ++ early_fixmap_shutdown(); devicemaps_init(mdesc); kmap_init(); tcm_init();