From patchwork Fri Jan 18 00:41:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1027065 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="fXvum3uv"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43ghvq3D2Fz9sCh for ; Fri, 18 Jan 2019 11:41:27 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726818AbfARAlX (ORCPT ); Thu, 17 Jan 2019 19:41:23 -0500 Received: from mail-qk1-f201.google.com ([209.85.222.201]:49548 "EHLO mail-qk1-f201.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725982AbfARAlW (ORCPT ); Thu, 17 Jan 2019 19:41:22 -0500 Received: by mail-qk1-f201.google.com with SMTP id s14so10143409qkl.16 for ; Thu, 17 Jan 2019 16:41:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=SqRVf1k8r4HU1tLrXmuqSPjPH96zEritmDCw3oJVIxE=; b=fXvum3uv76QwJQklaD6UsNj2blrVzvhLBsxFIBWbhcK7lIn2K5XkbvtbhbvZyYJ/Lk 4wvZj28N9hFMrMVJKBZr6CMtyBL8KuYIpm2pMUmK5uVm9h0+RJoqn0Q0gSABg2Ow2Cym VknSGPnj2+xRH6YwDyKVzovlYFNR+yA6bXt4b3DjeemLOyMnMgpfvhPW1eOKrrPtdOgm aaiH8Z08Fk2wjxBp0vBLaesrEJK8y0MDlAafXwKNRicQkOpCYIARB5f9sL3A51Se4VaZ GpfrRho6Tj0latLC6GScSEen2V+4Fjenr/f6kb9iwCp078YLBJ1SWXyEiSBRhl75+RCf bK9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=SqRVf1k8r4HU1tLrXmuqSPjPH96zEritmDCw3oJVIxE=; b=Na7VaYtjHpA4XKmyCUELvE+GHtLW6YZ9g+bm0BMNHNVeJPhAmKeXhbA47GuiWPScc2 P7PGVLFcUGqk1fSZ43BD8MYiFaEF5PfFEmG/ZgvD15K8QH2pdm9il3Vz07c7dppOoEwQ iVIzZ+PRYvg5MesuUeu0RQHIBX6oN1vF2Z33M141Uxf7k13EDfxFsglRwCva76+C0PMc GYIkbFAfisOA2IdKWELAWSTgpdE6Uh0B1R/soPyjX+wn/GsJUmTlHM8SnxJjm/7sHWBL zjbyBggw5i4DVHx4FJfnhM7MDsKeoCDice8YpaQlR+x4QL+PSauwgkFjGuWcPgCJzOv9 UrVg== X-Gm-Message-State: AJcUukfWEiaM6uRrbfvaODXGj061zosImklcONtAUSxreZtBiJI/nVe9 iSrEYdw07AA7dMhXQzOylqbUfDgtS5Jr2XdEKzxiKh7Z7fuIeEHSRDNACbGrkR4dpyHF+XP0Q5i tHMnxz39VJEHrm5fgzPyK+hdl+609HUXO9AojEn4LuagR+BpKvWLVsA== X-Google-Smtp-Source: ALg8bN6n3MaoAxmlKH6bxByrs9cUTmO01W+G52YWZUq8r/H6Ysg64hp9kOQqGtAyYX8SPxc/6zTujR8= X-Received: by 2002:a0c:8a7c:: with SMTP id 57mr9218433qvu.45.1547772081710; Thu, 17 Jan 2019 16:41:21 -0800 (PST) Date: Thu, 17 Jan 2019 16:41:05 -0800 In-Reply-To: <20190118004106.163825-1-sdf@google.com> Message-Id: <20190118004106.163825-5-sdf@google.com> Mime-Version: 1.0 References: <20190118004106.163825-1-sdf@google.com> X-Mailer: git-send-email 2.20.1.321.g9e740568ce-goog Subject: [PATCH bpf-next 4/5] selftests/bpf: add BPF_CGROUP_INET{4, 6}_SOCK_RELEASE to test_sock.c From: Stanislav Fomichev To: netdev@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, Stanislav Fomichev Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add context access tests for BPF_CGROUP_INET{4,6}_SOCK_RELEASE. Signed-off-by: Stanislav Fomichev --- tools/testing/selftests/bpf/test_sock.c | 119 ++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/tools/testing/selftests/bpf/test_sock.c b/tools/testing/selftests/bpf/test_sock.c index 561ffb6d6433..07ef99b52640 100644 --- a/tools/testing/selftests/bpf/test_sock.c +++ b/tools/testing/selftests/bpf/test_sock.c @@ -309,6 +309,125 @@ static struct sock_test tests[] = { 0, SUCCESS, }, + { + "sock_release4 load with valid access: src_ip4", + .insns = { + BPF_MOV64_REG(BPF_REG_6, BPF_REG_1), + BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, + offsetof(struct bpf_sock, src_ip4)), + BPF_MOV64_IMM(BPF_REG_0, 1), + BPF_EXIT_INSN(), + }, + BPF_CGROUP_INET4_SOCK_RELEASE, + BPF_CGROUP_INET4_SOCK_RELEASE, + AF_INET, + SOCK_STREAM, + "127.0.0.1", + 0, + SUCCESS, + }, + { + "sock_release4 load with valid access: src_port", + .insns = { + BPF_MOV64_REG(BPF_REG_6, BPF_REG_1), + BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, + offsetof(struct bpf_sock, src_port)), + BPF_MOV64_IMM(BPF_REG_0, 1), + BPF_EXIT_INSN(), + }, + BPF_CGROUP_INET4_SOCK_RELEASE, + BPF_CGROUP_INET4_SOCK_RELEASE, + AF_INET, + SOCK_STREAM, + "127.0.0.1", + 0, + SUCCESS, + }, + { + "sock_release4 load with invalid access: src_ip6", + .insns = { + BPF_MOV64_REG(BPF_REG_6, BPF_REG_1), + BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, + offsetof(struct bpf_sock, src_ip6[0])), + BPF_MOV64_IMM(BPF_REG_0, 1), + BPF_EXIT_INSN(), + }, + BPF_CGROUP_INET4_SOCK_RELEASE, + BPF_CGROUP_INET4_SOCK_RELEASE, + 0, + 0, + NULL, + 0, + LOAD_REJECT, + }, + { + "sock_release4 load with valid access: mark", + .insns = { + BPF_MOV64_REG(BPF_REG_6, BPF_REG_1), + BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, + offsetof(struct bpf_sock, mark)), + BPF_MOV64_IMM(BPF_REG_0, 1), + BPF_EXIT_INSN(), + }, + BPF_CGROUP_INET4_SOCK_RELEASE, + BPF_CGROUP_INET4_SOCK_RELEASE, + AF_INET, + SOCK_STREAM, + "127.0.0.1", + 0, + SUCCESS, + }, + { + "sock_release6 load with valid access: src_ip6", + .insns = { + BPF_MOV64_REG(BPF_REG_6, BPF_REG_1), + BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, + offsetof(struct bpf_sock, src_ip6[0])), + BPF_MOV64_IMM(BPF_REG_0, 1), + BPF_EXIT_INSN(), + }, + BPF_CGROUP_INET6_SOCK_RELEASE, + BPF_CGROUP_INET6_SOCK_RELEASE, + AF_INET6, + SOCK_STREAM, + "::", + 0, + SUCCESS, + }, + { + "sock_release6 load with valid access: src_port", + .insns = { + BPF_MOV64_REG(BPF_REG_6, BPF_REG_1), + BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, + offsetof(struct bpf_sock, src_port)), + BPF_MOV64_IMM(BPF_REG_0, 1), + BPF_EXIT_INSN(), + }, + BPF_CGROUP_INET6_SOCK_RELEASE, + BPF_CGROUP_INET6_SOCK_RELEASE, + AF_INET6, + SOCK_STREAM, + "::", + 0, + SUCCESS, + }, + { + "sock_release6 load with invalid access: src_ip4", + .insns = { + BPF_MOV64_REG(BPF_REG_6, BPF_REG_1), + BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, + offsetof(struct bpf_sock, src_ip4)), + BPF_MOV64_IMM(BPF_REG_0, 1), + BPF_EXIT_INSN(), + }, + BPF_CGROUP_INET6_SOCK_RELEASE, + BPF_CGROUP_INET6_SOCK_RELEASE, + 0, + 0, + NULL, + 0, + LOAD_REJECT, + }, }; static size_t probe_prog_length(const struct bpf_insn *fp)