Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp339441yba; Fri, 26 Apr 2019 00:35:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqxTY2AMi++w9pizjHpiuL7posuRHXc+lpIE/GDo/jPK/bH3HOu1GAgRD5YKrtcoyZ9K0vX1 X-Received: by 2002:a63:e20b:: with SMTP id q11mr43275376pgh.263.1556264102417; Fri, 26 Apr 2019 00:35:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556264102; cv=none; d=google.com; s=arc-20160816; b=P43UVxzaR7fbGHfyKcbBQXKa9KaHJyForbBDUPirPMzqKM15HjR3JPVzZ3DeHAqQ/6 2Jo9BoHcFF6AxxOEj6zeqxtini7j7TisObjXi32kRtSfImGDZ20J+Bl2KPi/FsO8cfRk TXuk0K+ZYi5pVRh7NnksZUhSo3MyGH5tgfPNlCeVz5jPe2M4aMX0whc+RM/A2Ahmhtxi YzmbcFJJKZTD7+UlEE/e8eruVK/gJKrqWg6g029aC+gycNogyIG64shT2EyT1H3rT0OB arj97zU/I0UhxZk10F6NVcBAafwey2M1dpkihnDC25TuYepmtMWvnDPedPHshtKFjDRL 8ePQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=RIE66crRSFais2XMEreovT7cuc4aWzwk2c6XjFrsy1k=; b=XL7BPQrM31jm1Tsl+FZvTsQOXVlH7jQDe0E67H0K07UB2SC8v5F2sc9/SvG9sR3NhT eJJ/2OhjxGAqCYrOAirBYFj5sPgR3iuaVbdp/MTsUOqF83N7lWGgUzASiOqOmgOmd57y 5K2Z2giRWCc5jz5CXlndA7IdIeuDiPRdvaqlh6/rvUTUEsgQr4MgGOLredn/Yn7hUJUb uSqFD2YvBUoCte7yRVqIFAcX7L0dB+I/mKvl9OK5T8zPZARru5HVqM6JYcLwgQycl8lp MuPA2nYSmPaR9UUwNedIhjbZBAQ5pg82S1cNeVoZgPpV4meOZPdbDSkBE4LLM0+ZNA1Z C5eQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f22si13581040pgf.227.2019.04.26.00.34.47; Fri, 26 Apr 2019 00:35:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726308AbfDZHb5 (ORCPT + 99 others); Fri, 26 Apr 2019 03:31:57 -0400 Received: from ex13-edg-ou-001.vmware.com ([208.91.0.189]:2747 "EHLO EX13-EDG-OU-001.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726197AbfDZHby (ORCPT ); Fri, 26 Apr 2019 03:31:54 -0400 Received: from sc9-mailhost3.vmware.com (10.113.161.73) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Fri, 26 Apr 2019 00:31:40 -0700 Received: from sc2-haas01-esx0118.eng.vmware.com (sc2-haas01-esx0118.eng.vmware.com [10.172.44.118]) by sc9-mailhost3.vmware.com (Postfix) with ESMTP id 1086741299; Fri, 26 Apr 2019 00:31:46 -0700 (PDT) From: Nadav Amit To: Peter Zijlstra , Borislav Petkov , Andy Lutomirski , Ingo Molnar CC: , , , Thomas Gleixner , Nadav Amit , Dave Hansen , , , , , , , , , , , Rick Edgecombe Subject: [PATCH v5 19/23] x86/ftrace: Use vmalloc special flag Date: Thu, 25 Apr 2019 17:11:39 -0700 Message-ID: <20190426001143.4983-20-namit@vmware.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190426001143.4983-1-namit@vmware.com> References: <20190426001143.4983-1-namit@vmware.com> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-001.vmware.com: namit@vmware.com does not designate permitted sender hosts) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rick Edgecombe Use new flag VM_FLUSH_RESET_PERMS for handling freeing of special permissioned memory in vmalloc and remove places where memory was set NX and RW before freeing which is no longer needed. Acked-by: Steven Rostedt (VMware) Tested-by: Steven Rostedt (VMware) Signed-off-by: Rick Edgecombe --- arch/x86/kernel/ftrace.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 53ba1aa3a01f..0caf8122d680 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -678,12 +678,8 @@ static inline void *alloc_tramp(unsigned long size) { return module_alloc(size); } -static inline void tramp_free(void *tramp, int size) +static inline void tramp_free(void *tramp) { - int npages = PAGE_ALIGN(size) >> PAGE_SHIFT; - - set_memory_nx((unsigned long)tramp, npages); - set_memory_rw((unsigned long)tramp, npages); module_memfree(tramp); } #else @@ -692,7 +688,7 @@ static inline void *alloc_tramp(unsigned long size) { return NULL; } -static inline void tramp_free(void *tramp, int size) { } +static inline void tramp_free(void *tramp) { } #endif /* Defined as markers to the end of the ftrace default trampolines */ @@ -808,6 +804,8 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size) /* ALLOC_TRAMP flags lets us know we created it */ ops->flags |= FTRACE_OPS_FL_ALLOC_TRAMP; + set_vm_flush_reset_perms(trampoline); + /* * Module allocation needs to be completed by making the page * executable. The page is still writable, which is a security hazard, @@ -816,7 +814,7 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size) set_memory_x((unsigned long)trampoline, npages); return (unsigned long)trampoline; fail: - tramp_free(trampoline, *tramp_size); + tramp_free(trampoline); return 0; } @@ -947,7 +945,7 @@ void arch_ftrace_trampoline_free(struct ftrace_ops *ops) if (!ops || !(ops->flags & FTRACE_OPS_FL_ALLOC_TRAMP)) return; - tramp_free((void *)ops->trampoline, ops->trampoline_size); + tramp_free((void *)ops->trampoline); ops->trampoline = 0; } -- 2.17.1