From patchwork Sat Nov 17 18:57:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 151418 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp808723ljp; Sat, 17 Nov 2018 10:57:32 -0800 (PST) X-Google-Smtp-Source: AJdET5dY53dB7AccI6n5gOXAGQLoZuJ4y1Z6ydLL91EJfu7LCWRDckGGbj1y6KXvB4Mn5ww38Hj/ X-Received: by 2002:a63:594d:: with SMTP id j13mr14435716pgm.210.1542481052608; Sat, 17 Nov 2018 10:57:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542481052; cv=none; d=google.com; s=arc-20160816; b=lKnHxqVoO77yKcNE1d1YixU2FqXKz7y01KqizlmKevXtU09qQvkeHphFmC8RSt6AHk K4uHWt0zZ25VApiuybig1gF0BQLuYuat1+k8CzLjwaNFYaN2FuYAeY03UBfU1zJ0KBzl FFgibcqfihzUbuVNZ1/7JscZwIE+IoSWwfRfhDnbh4pmIjOu48aF/ihNnYRk00m+MQyD e7YHVpx+e7vKmqLiNWE8ww4aYJR9tS6pN1FGmumUJ2UBi2t3jTGy7FDlb2CLF4PNP1pd umEdzwFM/PaQYzh6LYhwU191/CDGceEDnhWtHb4en+1KsSOKR2k7EAiUiL5+VO3+yX3J B4fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=JmtMWaiD9FenKM3ns0kNxP2J4QR+RUeNI/5TJ/tQ45I=; b=eN0jUp5cbax8mqpuA+EmHPHgQUIo52BcOO8/6O9nMvGM3Hut51GPwx2Bep+HQAq2ER aHjzDg+3Kn4Sx3V3tL2douU0Vx2wbriTLVuupyXohQK+W544W5yAkYU80aezHZn1bIXd RBl8/QhCVL+oD8O6yy8FzQhHQYKQFTUDubRaCX//5jbgPKUp592ph9RYnen2ZCdQfCom Ng9C81YoyS06PoGsy85r3+Wa4xcaiHZZKY9L7D8/C90qDx3jRsLyWoo5HuursFLQJY+E Ygj0wYEPpXzF9n27jGQrCoIqm3U7/xEmLjYiigKqkZynaWH2WmFwvoju+7H+mxMiFBDB 0cNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=KAW8uS2e; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o68si346275pfo.140.2018.11.17.10.57.32; Sat, 17 Nov 2018 10:57:32 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=KAW8uS2e; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726982AbeKRFO7 (ORCPT + 10 others); Sun, 18 Nov 2018 00:14:59 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:36701 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726932AbeKRFO7 (ORCPT ); Sun, 18 Nov 2018 00:14:59 -0500 Received: by mail-pg1-f196.google.com with SMTP id n2so4852676pgm.3 for ; Sat, 17 Nov 2018 10:57:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=JmtMWaiD9FenKM3ns0kNxP2J4QR+RUeNI/5TJ/tQ45I=; b=KAW8uS2esdTjeBcDfFodpTuBiPuzrfOgpEvhmkdmizzqp7CMEjaFC2ORlF9MeL+yeA stdwlyxwK9cJAK+MAYm3DEfW4lRgMCiJRj3yewaXsrtQx5DmclC4R/K9qjVetVNcal+H pjN2zNK/65b6+lBFp6r24jInRxn3xDvrMAU8w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=JmtMWaiD9FenKM3ns0kNxP2J4QR+RUeNI/5TJ/tQ45I=; b=E7lth4bn2d70y5xezqkL8XUMRDGey1ljXRrYFF16KhIf2HrQvRHseRSO5RXERKrHzb y9zLj3UtjcHBwqWBbfHjBK3kk+Wqq8u94GZujepBaz2ZWuor1uUvQvaG4z9VbR35E7Cr GsB32m+fVtw/fD/GhPdVdmUX7GRNSzvPcvKgn1EjTIvStnOiWk2+gIM15VQ9xyQYtkyN RzYtrbmfDwmkf4Daf2UxHnJaMaEhvxCRrkhkDvqr1APVAF1TnZa+XxU4hYDPlw1mwRXr jB2YyMZXbPkY8mGRWjNbGj7gaHggDaizluW0m65qsztWEX4jmeDwGn6ph3B2lw9/BRqJ yohw== X-Gm-Message-State: AGRZ1gIWZWkil/Eg4f7yy5Sqvzy3NaLOZhnMXjIRe4YHqk+tjW9TlS69 hgP2jplChXVOfmyOdXHKexcBiw== X-Received: by 2002:a62:ed09:: with SMTP id u9-v6mr16036733pfh.188.1542481044594; Sat, 17 Nov 2018 10:57:24 -0800 (PST) Received: from mba13.psav.com ([64.114.255.114]) by smtp.gmail.com with ESMTPSA id u76-v6sm49550745pfa.176.2018.11.17.10.57.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Nov 2018 10:57:23 -0800 (PST) From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: Ard Biesheuvel , Daniel Borkmann , Alexei Starovoitov , Rick Edgecombe , Eric Dumazet , Jann Horn , Kees Cook , Jessica Yu , Arnd Bergmann , Catalin Marinas , Will Deacon , Mark Rutland , Ralf Baechle , Paul Burton , James Hogan , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , "David S. Miller" , linux-arm-kernel@lists.infradead.org, linux-mips@linux-mips.org, linuxppc-dev@lists.ozlabs.org, sparclinux@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 4/4] arm64/bpf: don't allocate BPF JIT programs in module memory Date: Sat, 17 Nov 2018 10:57:15 -0800 Message-Id: <20181117185715.25198-5-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181117185715.25198-1-ard.biesheuvel@linaro.org> References: <20181117185715.25198-1-ard.biesheuvel@linaro.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The arm64 module region is a 128 MB region that is kept close to the core kernel, in order to ensure that relative branches are always in range. So using the same region for programs that do not have this restriction is wasteful, and preferably avoided. Now that the core BPF JIT code permits the alloc/free routines to be overridden, implement them by simple vmalloc_exec()/vfree() calls, which can be served from anywere. This also solves an issue under KASAN, where shadow memory is needlessly allocated for all BPF programs (which don't require KASAN shadow pages since they are not KASAN instrumented) Signed-off-by: Ard Biesheuvel --- arch/arm64/net/bpf_jit_comp.c | 11 +++++++++++ 1 file changed, 11 insertions(+) -- 2.17.1 diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c index a6fdaea07c63..e0c702c2f682 100644 --- a/arch/arm64/net/bpf_jit_comp.c +++ b/arch/arm64/net/bpf_jit_comp.c @@ -940,3 +940,14 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) tmp : orig_prog); return prog; } + +void *bpf_jit_alloc_exec(unsigned long size) +{ + return vmalloc_exec(size); +} + +void bpf_jit_binary_free(struct bpf_binary_header *hdr) +{ + bpf_jit_binary_unlock_ro(hdr); + vfree(hdr); +}