From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751011AbdBCPiv (ORCPT ); Fri, 3 Feb 2017 10:38:51 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:33334 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750851AbdBCPiu (ORCPT ); Fri, 3 Feb 2017 10:38:50 -0500 From: Hoeun Ryu To: Andrew Morton , Michal Hocko , Ingo Molnar , Andy Lutomirski , Kees Cook , "Eric W. Biederman" , Mateusz Guzik Cc: linux-kernel@vger.kernel.org, kernel-hardening@lists.openwall.com, Hoeun Ryu Subject: [PATCH 3/3] fork: allocate vmapped kernel stacks for cache when a cpu is up Date: Sat, 4 Feb 2017 00:33:21 +0900 Message-Id: <1486136013-27565-1-git-send-email-hoeun.ryu@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org when a cpu is up, predefined number of stacks are allocated and cached immediately. Signed-off-by: Hoeun Ryu --- kernel/fork.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kernel/fork.c b/kernel/fork.c index 50de6cf..ee4067d 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -194,6 +194,21 @@ static int alloc_vm_stack_cache(unsigned int cpu) vm_stack_cache->cur = 0; vm_stack_cache->nr = 0; + for (i = 0; i < NR_CACHED_STACKS; i++) { + void *stack = __vmalloc_node_range(THREAD_SIZE, THREAD_SIZE, + VMALLOC_START, VMALLOC_END, + THREADINFO_GFP | __GFP_HIGHMEM, + PAGE_KERNEL, + 0, cpu_to_node(cpu), + __builtin_return_address(0)); + if (!stack) + return -ENOMEM; + + vm_stacks[i] = find_vm_area(stack); + vm_stack_cache->cur++; + vm_stack_cache->nr++; + } + return 0; } -- 2.7.4