From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mauricio Vasquez B Subject: [RFC PATCH bpf-next v4 5/7] bpf: restrict use of peek/push/pop Date: Thu, 04 Oct 2018 19:12:49 +0200 Message-ID: <153867316984.10087.3212168623519526172.stgit@kernel> References: <153867314370.10087.2202062772042248653.stgit@kernel> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Alexei Starovoitov , Daniel Borkmann , netdev@vger.kernel.org Return-path: Received: from fm2nodo1.polito.it ([130.192.180.17]:34408 "EHLO fm2nodo1.polito.it" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727691AbeJEAHW (ORCPT ); Thu, 4 Oct 2018 20:07:22 -0400 In-Reply-To: <153867314370.10087.2202062772042248653.stgit@kernel> Sender: netdev-owner@vger.kernel.org List-ID: Restrict the use of peek, push and pop helpers only to queue and stack maps. Signed-off-by: Mauricio Vasquez B --- kernel/bpf/verifier.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 489667f93061..8b1f1b348782 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -2328,6 +2328,13 @@ static int check_map_func_compatibility(struct bpf_verifier_env *env, if (func_id != BPF_FUNC_sk_select_reuseport) goto error; break; + case BPF_MAP_TYPE_QUEUE: + case BPF_MAP_TYPE_STACK: + if (func_id != BPF_FUNC_map_peek_elem && + func_id != BPF_FUNC_map_pop_elem && + func_id != BPF_FUNC_map_push_elem) + goto error; + break; default: break; } @@ -2384,6 +2391,13 @@ static int check_map_func_compatibility(struct bpf_verifier_env *env, if (map->map_type != BPF_MAP_TYPE_REUSEPORT_SOCKARRAY) goto error; break; + case BPF_FUNC_map_peek_elem: + case BPF_FUNC_map_pop_elem: + case BPF_FUNC_map_push_elem: + if (map->map_type != BPF_MAP_TYPE_QUEUE && + map->map_type != BPF_MAP_TYPE_STACK) + goto error; + break; default: break; }