[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20171122183256.7219-1-g.borello@gmail.com>
Date: Wed, 22 Nov 2017 18:32:52 +0000
From: Gianluca Borello <g.borello@...il.com>
To: netdev@...r.kernel.org
Cc: daniel@...earbox.net, ast@...nel.org, yhs@...com,
Gianluca Borello <g.borello@...il.com>
Subject: [PATCH net 0/4] bpf: fix semantics issues with helpers receiving NULL arguments
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
<NULL, 0> tuple. By doing so, we can fix the semantics of the other helpers
that don't need <NULL, 0> and can just handle <!NULL, 0>, 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(-)
--
2.14.1
Powered by blists - more mailing lists