From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gianluca Borello Subject: [PATCH net 0/4] bpf: fix semantics issues with helpers receiving NULL arguments Date: Wed, 22 Nov 2017 18:32:52 +0000 Message-ID: <20171122183256.7219-1-g.borello@gmail.com> Cc: daniel@iogearbox.net, ast@kernel.org, yhs@fb.com, Gianluca Borello To: netdev@vger.kernel.org Return-path: Received: from mail-pf0-f195.google.com ([209.85.192.195]:46332 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751585AbdKVSdX (ORCPT ); Wed, 22 Nov 2017 13:33:23 -0500 Received: by mail-pf0-f195.google.com with SMTP id q4so12409231pfg.13 for ; Wed, 22 Nov 2017 10:33:23 -0800 (PST) Sender: netdev-owner@vger.kernel.org List-ID: This set includes some fixes in semantics and usability issues that emerged recently, and would be good to have them in net before the next release. In particular, ARG_CONST_SIZE_OR_ZERO semantics was recently changed in commit 9fd29c08e520 ("bpf: improve verifier ARG_CONST_SIZE_OR_ZERO semantics") with the goal of letting the compiler generate simpler code that the verifier can more easily accept. To handle this change in semantics, a few checks in some helpers were added, like in commit 9c019e2bc4b2 ("bpf: change helper bpf_probe_read arg2 type to ARG_CONST_SIZE_OR_ZERO"), and those checks are less than ideal because once they make it into a released kernel bpf programs can start relying on them, preventing the possibility of being removed later on. This patch tries to fix the issue by introducing a new argument type ARG_PTR_TO_MEM_OR_NULL that can be used for helpers that can receive a tuple. By doing so, we can fix the semantics of the other helpers that don't need and can just handle , allowing the code to get rid of those checks. Gianluca Borello (4): bpf: introduce ARG_PTR_TO_MEM_OR_NULL bpf: remove explicit handling of 0 for arg2 in bpf_probe_read bpf: change bpf_probe_read_str arg2 type to ARG_CONST_SIZE_OR_ZERO bpf: change bpf_perf_event_output arg5 type to ARG_CONST_SIZE_OR_ZERO include/linux/bpf.h | 1 + kernel/bpf/verifier.c | 4 +- kernel/trace/bpf_trace.c | 12 +-- net/core/filter.c | 4 +- tools/testing/selftests/bpf/test_verifier.c | 113 ++++++++++++++++++++++++++-- 5 files changed, 116 insertions(+), 18 deletions(-)