Received: by 10.213.65.68 with SMTP id h4csp870922imn; Tue, 27 Mar 2018 10:17:42 -0700 (PDT) X-Google-Smtp-Source: AIpwx49PHHffwONm6spchd9BWWAE2cV/3GGgVQBaXCBRA1mieyXkX+ax2hLIL0XtwDHPg5WSd2i7 X-Received: by 2002:a17:902:8d90:: with SMTP id v16-v6mr190202plo.168.1522171062708; Tue, 27 Mar 2018 10:17:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522171062; cv=none; d=google.com; s=arc-20160816; b=mmfMX+JFsKkcyYviDFiC16QOIe12kYlQkFVN6w9BdU7KJ12/IWVliXVJZA5cG0Okis 7x7ViRaTAkm/f+G39anbIhewuOw/Bh7p70Q9AaGlkWBQImeq0yIeqbMUK9SxQc8dxv3V mKKqrpGwGG3zyPFd4xUq2lLryFQMH3WGncVyOsoN86QPUIa7wSoshAIOZ4RELB/hzw79 iNjt1bdU2eKbqoOsEm0y+GY7yI1NvebaPVNthDU2PmAax4xZKXVwPRmoBhMAwNMuUedJ 9LGtdWt0NMWFMMfRohXcpyZZ0HV42KKxOdanUAORNrF+LWh2TUQNu5FLCYoS/H91wxL4 /Iow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=KKjiJUj21glv+nARWX5GWQWgfdnE9G7vRIYEYzPJ1so=; b=KwladNjMWxy+tWvnwG9TG4Tec0aY9tCQNSPRHcjkQf5MrAUIju5dozsZhcIwktM6Zw e8G9yGd2HRWcEWQgqNsg2eceR5kBmDHQi92pAovarMQ2abcYjtfnpCVElxuLWOpl6Z6p u3B69FVTxRG6lYWMZ6BtCc06h0P33Fl0AyfFGO0URxhlWorvNRLVs2VyOd+5BRNYl2oO vTAOpdHMaZcMApUEBExRWTliXRn5Gauf1mXEAQBGE/IhfcAyIf3BavUAj75w09+8AghF LeBO16xdztyerU9ZOVAAlllVwFwHB/FKFehV9UysWRvcA4E+1JMoOZ0kVnAsIFhKnLPy MrVA== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 197si1132557pge.78.2018.03.27.10.17.27; Tue, 27 Mar 2018 10:17:42 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755277AbeC0Qil (ORCPT + 99 others); Tue, 27 Mar 2018 12:38:41 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:46850 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755249AbeC0Qih (ORCPT ); Tue, 27 Mar 2018 12:38:37 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id F3703102C; Tue, 27 Mar 2018 16:38:36 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniel Borkmann , Alexei Starovoitov , Eric Dumazet Subject: [PATCH 4.14 101/101] bpf, x64: increase number of passes Date: Tue, 27 Mar 2018 18:28:13 +0200 Message-Id: <20180327162756.184401630@linuxfoundation.org> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20180327162749.993880276@linuxfoundation.org> References: <20180327162749.993880276@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Daniel Borkmann commit 6007b080d2e2adb7af22bf29165f0594ea12b34c upstream. In Cilium some of the main programs we run today are hitting 9 passes on x64's JIT compiler, and we've had cases already where we surpassed the limit where the JIT then punts the program to the interpreter instead, leading to insertion failures due to CONFIG_BPF_JIT_ALWAYS_ON or insertion failures due to the prog array owner being JITed but the program to insert not (both must have the same JITed/non-JITed property). One concrete case the program image shrunk from 12,767 bytes down to 10,288 bytes where the image converged after 16 steps. I've measured that this took 340us in the JIT until it converges on my i7-6600U. Thus, increase the original limit we had from day one where the JIT covered cBPF only back then before we run into the case (as similar with the complexity limit) where we trip over this and hit program rejections. Also add a cond_resched() into the compilation loop, the JIT process runs without any locks and may sleep anyway. Signed-off-by: Daniel Borkmann Acked-by: Alexei Starovoitov Reviewed-by: Eric Dumazet Signed-off-by: Alexei Starovoitov Signed-off-by: Greg Kroah-Hartman --- arch/x86/net/bpf_jit_comp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c @@ -1156,7 +1156,7 @@ struct bpf_prog *bpf_int_jit_compile(str * may converge on the last pass. In such case do one more * pass to emit the final image */ - for (pass = 0; pass < 10 || image; pass++) { + for (pass = 0; pass < 20 || image; pass++) { proglen = do_jit(prog, addrs, image, oldproglen, &ctx); if (proglen <= 0) { image = NULL; @@ -1183,6 +1183,7 @@ struct bpf_prog *bpf_int_jit_compile(str } } oldproglen = proglen; + cond_resched(); } if (bpf_jit_enable > 1)