From patchwork Wed Nov 22 18:32:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gianluca Borello X-Patchwork-Id: 840471 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="qsEcTuzi"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yhrgk6Fbtz9s5L for ; Thu, 23 Nov 2017 05:33:38 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751869AbdKVSdg (ORCPT ); Wed, 22 Nov 2017 13:33:36 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:40340 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751762AbdKVSde (ORCPT ); Wed, 22 Nov 2017 13:33:34 -0500 Received: by mail-pf0-f193.google.com with SMTP id q63so1123137pfd.7 for ; Wed, 22 Nov 2017 10:33:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=wuo43/SvJ/ItF5z2q6znb6i1YqTOrUBZyZUnZdYipN4=; b=qsEcTuziPjZ09AmL2SdR4SaBoOZXbsisQlirAZBPhPF46REjuYSwfbw00hW16VxTDV VLMZXR0PtXGsoUsdN6EMQ1bjP1CqAfgem8V/Anklyyui0c2MP9SGG0/e7Laruk2+CUR+ 1lj+8CVawnHtKzWU1O0V9NlsInpLEtXqei5gUarNSTW+NkOTMqRaJt6Rtmika2J6Bh/I Uxp7wXfzk/qyJhw9bnmt3bC51LJyOK0GDcAEUzYfzXxQT8VXRD1ol2ITeINzzs8jQCQO T30S27JYUrAVW27jMCC68JpFMz89wcBOM3meE2Dero5rYFhUesrHlFYFJQatqnYKm8SJ 1/gA== 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=wuo43/SvJ/ItF5z2q6znb6i1YqTOrUBZyZUnZdYipN4=; b=DGSDk3a3f3tut4q0Sq4Jsr0wt6LoR2B7kFJsJJG5BmRE0dv2Q7sNFeNoRWtSZ+0+nX DnMKQy0ydCDMXNghJgk7CoDdN77vift9L88JjhWiJDjkAacGnU/dgo8lH8ouViqneanF CXx13Xn1/Y+DIP3wzX8jjHqBRcpSE9jeuMvu6tKvwHRY4/s+0cpH8IzjnAJ78Dly9BU7 cUc2XfYNnOoNoTe40wAQfGIou+V48UTvEUVXIg+1L3bcaHd1Hss7rhDyfqbW3J13boU6 yus6wtHca07zKNlzYVSVWP0nWSYsr0vgE6cPnVsrtNo0nOQMe+1sx4kvxHjWEtKmzE51 4z+Q== X-Gm-Message-State: AJaThX4AkW7JHsEdMhFAM2pg8rJthNr4/vtG9e/KrAJRygmLlW5xDopg LcyJSjp/F7BhIrPNyAvMLUT7odQO X-Google-Smtp-Source: AGs4zMbniawjMA2LGEjoyKDy7J5UvCk7OSUO/s0K3NX7DrZwIWh6HHLrfoMFvtFpi5qjuYTdzmR5QA== X-Received: by 10.99.119.79 with SMTP id s76mr21549802pgc.192.1511375613551; Wed, 22 Nov 2017 10:33:33 -0800 (PST) Received: from localhost.localdomain (c-67-172-180-56.hsd1.ca.comcast.net. [67.172.180.56]) by smtp.gmail.com with ESMTPSA id k3sm34888075pfc.44.2017.11.22.10.33.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Nov 2017 10:33:33 -0800 (PST) From: Gianluca Borello To: netdev@vger.kernel.org Cc: daniel@iogearbox.net, ast@kernel.org, yhs@fb.com, Gianluca Borello Subject: [PATCH net 2/4] bpf: remove explicit handling of 0 for arg2 in bpf_probe_read Date: Wed, 22 Nov 2017 18:32:54 +0000 Message-Id: <20171122183256.7219-3-g.borello@gmail.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20171122183256.7219-1-g.borello@gmail.com> References: <20171122183256.7219-1-g.borello@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Commit 9c019e2bc4b2 ("bpf: change helper bpf_probe_read arg2 type to ARG_CONST_SIZE_OR_ZERO") changed arg2 type to ARG_CONST_SIZE_OR_ZERO to simplify writing bpf programs by taking advantage of the new semantics introduced for ARG_CONST_SIZE_OR_ZERO which allows arguments. In order to prevent the helper from actually passing a NULL pointer to probe_kernel_read, which can happen when is passed to the helper, the commit also introduced an explicit check against size == 0. After the recent introduction of the ARG_PTR_TO_MEM_OR_NULL type, bpf_probe_read can not receive a pair of arguments anymore, thus the check is not needed anymore and can be removed, since probe_kernel_read can correctly handle a call. This also fixes the semantics of the helper before it gets officially released and bpf programs start relying on this check. Fixes: 9c019e2bc4b2 ("bpf: change helper bpf_probe_read arg2 type to ARG_CONST_SIZE_OR_ZERO") Signed-off-by: Gianluca Borello Acked-by: Alexei Starovoitov Acked-by: Daniel Borkmann Acked-by: Yonghong Song --- kernel/trace/bpf_trace.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) -- 2.14.1 diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index a5580c670866..728909f7951c 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -78,16 +78,12 @@ EXPORT_SYMBOL_GPL(trace_call_bpf); BPF_CALL_3(bpf_probe_read, void *, dst, u32, size, const void *, unsafe_ptr) { - int ret = 0; - - if (unlikely(size == 0)) - goto out; + int ret; ret = probe_kernel_read(dst, unsafe_ptr, size); if (unlikely(ret < 0)) memset(dst, 0, size); - out: return ret; }