From patchwork Mon Jul 15 16:39:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1132109 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: incoming-bpf@patchwork.ozlabs.org Delivered-To: patchwork-incoming-bpf@bilbo.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=bpf-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="Gfw+Q+z+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 45nTlk7453z9sMQ for ; Tue, 16 Jul 2019 02:40:02 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730915AbfGOQkC (ORCPT ); Mon, 15 Jul 2019 12:40:02 -0400 Received: from mail-vs1-f74.google.com ([209.85.217.74]:55751 "EHLO mail-vs1-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729941AbfGOQkC (ORCPT ); Mon, 15 Jul 2019 12:40:02 -0400 Received: by mail-vs1-f74.google.com with SMTP id w23so3426614vsj.22 for ; Mon, 15 Jul 2019 09:40:01 -0700 (PDT) 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=/4GOuezfoSXQsme0oY5IMJILtncU/YuwK20WFYPvy1k=; b=Gfw+Q+z+kXoFqI16PLUwNK/6E70/lm4vOqq+bKJ13ZpCyrp70pRmT1fYi5jbkMbwAw SOFKaZf3EjFEH7OhTsl3U9DmJRcBrzirZVLEHUPhCceZ4j+HFWUiNEyiIaCDjnTyJXIG xN3pVaeZue566N5J12JOSiNygwTsdiiP1teRecRFWbgxzhiVw2KirE+/KyKI/v9k9+zI AxMth2N/N/0HyPEL/vVq9JesXrSpXvrZrRGAXuLUrzxKyJRDfRsQGDBO8q9KA4VnwbEm Rwno00SHHD9T54tGB4/vSp1xlw81ACqequZBb8tcx2SFqKTMp/p2ivc4XXKWsM82xdvK 6pmA== 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=/4GOuezfoSXQsme0oY5IMJILtncU/YuwK20WFYPvy1k=; b=UlWZXUZCiWp/28tiHPlMcM6PRzOS0tP22XOyA/mE+N443KaGEuqT8Cs8dILPYgjWcC IDxudmGLSvI4zbmQT9AeaMYntwvfmzl5E4wShHyEraG5EkTysai0mEBzbRiakss1/E/v 07HyRgjmOq9gcWdAoXhCq0QtyJcAARtTBeV9IUQQy2OraVNC8uR2RIGChPGvA06z/Z0m 6VFB5/qkxmUWFpZDKSwq9CN2P2z3mXyMxu51Kl/ag2KRmCuCFMKi+eN/7EdeXumSdbLu OTry/wtXGLJkl6cBODo/UDpgG5ABjAYc6gqmlXrDsgNGLpr0pGdM99G4TBImMojQ/6g/ biPw== X-Gm-Message-State: APjAAAUC+wosfVxlfX2cqJPMe/F+s8fg7roo/DXe5QywpYYGxKAGeTLx fx+IiynX+H1eaaDL8ZwkuJBu9lI= X-Google-Smtp-Source: APXvYqw7IFloMg0HVhi260b0gZX2quy3sDJU/zr7RMuDgUDJqNowz1SrVOyRSqWfIgM+cOTXrW4r47Q= X-Received: by 2002:ab0:69c8:: with SMTP id u8mr16512558uaq.132.1563208801299; Mon, 15 Jul 2019 09:40:01 -0700 (PDT) Date: Mon, 15 Jul 2019 09:39:52 -0700 In-Reply-To: <20190715163956.204061-1-sdf@google.com> Message-Id: <20190715163956.204061-2-sdf@google.com> Mime-Version: 1.0 References: <20190715163956.204061-1-sdf@google.com> X-Mailer: git-send-email 2.22.0.510.g264f2c817a-goog Subject: [PATCH bpf 1/5] bpf: rename bpf_ctx_wide_store_ok to bpf_ctx_wide_access_ok From: Stanislav Fomichev To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, Stanislav Fomichev , Yonghong Song Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org Rename bpf_ctx_wide_store_ok to bpf_ctx_wide_access_ok to indicate that it can be used for both loads and stores. Cc: Yonghong Song Signed-off-by: Stanislav Fomichev --- include/linux/filter.h | 2 +- net/core/filter.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/linux/filter.h b/include/linux/filter.h index 6d944369ca87..ff65d22cf336 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -747,7 +747,7 @@ bpf_ctx_narrow_access_ok(u32 off, u32 size, u32 size_default) return size <= size_default && (size & (size - 1)) == 0; } -#define bpf_ctx_wide_store_ok(off, size, type, field) \ +#define bpf_ctx_wide_access_ok(off, size, type, field) \ (size == sizeof(__u64) && \ off >= offsetof(type, field) && \ off + sizeof(__u64) <= offsetofend(type, field) && \ diff --git a/net/core/filter.c b/net/core/filter.c index 47f6386fb17a..c5983ddb1a9f 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -6890,14 +6890,14 @@ static bool sock_addr_is_valid_access(int off, int size, if (!bpf_ctx_narrow_access_ok(off, size, size_default)) return false; } else { - if (bpf_ctx_wide_store_ok(off, size, - struct bpf_sock_addr, - user_ip6)) + if (bpf_ctx_wide_access_ok(off, size, + struct bpf_sock_addr, + user_ip6)) return true; - if (bpf_ctx_wide_store_ok(off, size, - struct bpf_sock_addr, - msg_src_ip6)) + if (bpf_ctx_wide_access_ok(off, size, + struct bpf_sock_addr, + msg_src_ip6)) return true; if (size != size_default) From patchwork Mon Jul 15 16:39:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1132111 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: incoming-bpf@patchwork.ozlabs.org Delivered-To: patchwork-incoming-bpf@bilbo.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=bpf-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="RvGoHW2M"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 45nTlm61cHz9sDQ for ; Tue, 16 Jul 2019 02:40:04 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731069AbfGOQkE (ORCPT ); Mon, 15 Jul 2019 12:40:04 -0400 Received: from mail-pl1-f202.google.com ([209.85.214.202]:53508 "EHLO mail-pl1-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730600AbfGOQkE (ORCPT ); Mon, 15 Jul 2019 12:40:04 -0400 Received: by mail-pl1-f202.google.com with SMTP id y22so8538948plr.20 for ; Mon, 15 Jul 2019 09:40:04 -0700 (PDT) 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=jnpOHMGVpVBT4U8hx7UMa8ffCebxTNA6BN/DaIbAs5A=; b=RvGoHW2MRV9EfhZeAXcBXkPbrToaAE17mk3FLUDKStKkL0zMCH9eCsiYK6fNFLY9Yq le4PNOH63MqUeX7C4feXRCDUtFloasWKQ1ma2CkUC9FDyxT1SOlXMBy2loQnQSrIAKOU HZusIMl/FM+zwKouuwRd6bxqy0kc3GPNIRT2RER7IXXjXg2d0A320QX2vBeWbncbqgO4 W3tRF5NYEmjh4FCewpHYjZZ3gBv7v6DdtkOAYb16dflsTAn1UV4vbEZwJM0qV4HO1e/B QBlqe8kQyTpn8Pbwk/dOQYCWWJrfRl3u4mW/A3ckYSDZrkGTA9K0SSboPyxZPkhkNVPa 1pJw== 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=jnpOHMGVpVBT4U8hx7UMa8ffCebxTNA6BN/DaIbAs5A=; b=icItzZjhFasJnPbzshmgFKVZfqjonob4O7gxPPr/epWqZ3GxQJQc9qIp9bKQ49dseV X4nw0HJs7CbZ1fWXZO5nz5euWnWFWCZ0tpPXd9tu7OYokF04nveV/Rf7A4cMdZ1g86/k h5ttrXuHkJ4VkJMFnHBaIRAz0dp668NKpSU7aZhk83GP7ti8+pPVvjUG0elZrPkiKKK2 09f+BaoF3Bw/D7jCS+VxfqxNBaNseB7qBjKxqHaxXk6S1Ybmks2jpfOj2+0ShTiSqv/Q O3AYiZhYgXkteEDEhBDb3Rbx/RP4/Km4TSxZNV0M1tMz7NLYKFThvJkpV2LfYgIPDxf9 dmMQ== X-Gm-Message-State: APjAAAXCnvCgun+1uPivIvzXVURQjy8t55CEHfOwJMOuNST5ay5MbPvl ikflpbKoWrWRtfmQNGl1pSRU0Sc= X-Google-Smtp-Source: APXvYqzruxPG34Ah1jjK/JlegpomzwcaFX6tT3691S3LwXsS9UQWc0vIaf4m9g1Ec+z6TUFKHOSUfDg= X-Received: by 2002:a63:ec03:: with SMTP id j3mr493975pgh.325.1563208803356; Mon, 15 Jul 2019 09:40:03 -0700 (PDT) Date: Mon, 15 Jul 2019 09:39:53 -0700 In-Reply-To: <20190715163956.204061-1-sdf@google.com> Message-Id: <20190715163956.204061-3-sdf@google.com> Mime-Version: 1.0 References: <20190715163956.204061-1-sdf@google.com> X-Mailer: git-send-email 2.22.0.510.g264f2c817a-goog Subject: [PATCH bpf 2/5] bpf: allow wide aligned loads for bpf_sock_addr user_ip6 and msg_src_ip6 From: Stanislav Fomichev To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, Stanislav Fomichev , Yonghong Song Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org Add explicit check for u64 loads of user_ip6 and msg_src_ip6 and update the comment. Cc: Yonghong Song Signed-off-by: Stanislav Fomichev --- include/uapi/linux/bpf.h | 4 ++-- net/core/filter.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 6f68438aa4ed..81be929b89fc 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -3248,7 +3248,7 @@ struct bpf_sock_addr { __u32 user_ip4; /* Allows 1,2,4-byte read and 4-byte write. * Stored in network byte order. */ - __u32 user_ip6[4]; /* Allows 1,2,4-byte read and 4,8-byte write. + __u32 user_ip6[4]; /* Allows 1,2,4,8-byte read and 4,8-byte write. * Stored in network byte order. */ __u32 user_port; /* Allows 4-byte read and write. @@ -3260,7 +3260,7 @@ struct bpf_sock_addr { __u32 msg_src_ip4; /* Allows 1,2,4-byte read and 4-byte write. * Stored in network byte order. */ - __u32 msg_src_ip6[4]; /* Allows 1,2,4-byte read and 4,8-byte write. + __u32 msg_src_ip6[4]; /* Allows 1,2,4,8-byte read and 4,8-byte write. * Stored in network byte order. */ __bpf_md_ptr(struct bpf_sock *, sk); diff --git a/net/core/filter.c b/net/core/filter.c index c5983ddb1a9f..0f6854ccf894 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -6884,9 +6884,19 @@ static bool sock_addr_is_valid_access(int off, int size, case bpf_ctx_range(struct bpf_sock_addr, msg_src_ip4): case bpf_ctx_range_till(struct bpf_sock_addr, msg_src_ip6[0], msg_src_ip6[3]): - /* Only narrow read access allowed for now. */ if (type == BPF_READ) { bpf_ctx_record_field_size(info, size_default); + + if (bpf_ctx_wide_access_ok(off, size, + struct bpf_sock_addr, + user_ip6)) + return true; + + if (bpf_ctx_wide_access_ok(off, size, + struct bpf_sock_addr, + msg_src_ip6)) + return true; + if (!bpf_ctx_narrow_access_ok(off, size, size_default)) return false; } else { From patchwork Mon Jul 15 16:39:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1132113 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="qFRhqqQ8"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 45nTlr1Gj1z9sDQ for ; Tue, 16 Jul 2019 02:40:08 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731061AbfGOQkH (ORCPT ); Mon, 15 Jul 2019 12:40:07 -0400 Received: from mail-pf1-f202.google.com ([209.85.210.202]:57122 "EHLO mail-pf1-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731220AbfGOQkH (ORCPT ); Mon, 15 Jul 2019 12:40:07 -0400 Received: by mail-pf1-f202.google.com with SMTP id x10so10547678pfa.23 for ; Mon, 15 Jul 2019 09:40:06 -0700 (PDT) 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=H6bBORuIj1kwmH7SjoC1Blq9UOe9iWIewERgafBpFPc=; b=qFRhqqQ880p78GtplFEeCJD3yOl85Jw7KwuLUaO4Lgr1rRCHYkSagnvCNQ0wkveeca sG8/CWhqJnznA2QKGVUlEyH2xSFPPLS9p/AIhIUiHYwEXKB85rAgtDeU/AzYSDy6f+i3 jHuv4Cwp3enrZvYC0KlqGfQ1QqCkZEvnTppHGY8YdgvjdnQlHK0uF17mpzzC0adhMaSx HbxN/JrZYE1FdL3/rwSGhaxOv0Idtgri5Ruwv/2OIfNmTMTKMcQSCsBmbhc5SeGSo3ry JbL0MIjYoqcQW7z21gWE/dLEHJFBM9LzOo6vfKbWnhMLsHzFesQhXUPF22R0nz7j5tfK Z4ug== 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=H6bBORuIj1kwmH7SjoC1Blq9UOe9iWIewERgafBpFPc=; b=J2llgF88L/lUn/nY+zhg1DjT0r1p3gRBb9lQ6TMdC8qiQXajp7Dk71hhzTVA4bjTSk MGb0ibov4fQB8JlGNV2zX0A1zp2Ijx0wQ71vzjIZLvw2FSo6Sr4Qj1CCSm8M3+5ePvG1 9/TYTgvEy2Y+bTXTqNysRpzYn3ueWCDlFfCDb3rM2SL7D1kRTemZ39UKJkzJavHeeISn k00oyXtHLAETeNwhM8qNb3aOK1iJAAiL/o3OO8rVg5KTynOcZ+zUatbfmEbBrjpwFF9v su8vgmSH4pjRXrnlnTRgqHU5dGrN6SjzcdpIK+Hsq1bwiJ49YSL45xvJoJ2kGsMDnVzO p7FA== X-Gm-Message-State: APjAAAVZwfGr30AEVmfaxGZjvnDhz2H8Ob907O410GrZR4PDfiNXH4Dz y1JLU90GXq5p8Aer5UJ79c8fC4Gl1DJTmldAhLoRAPDHqADOVevvrG0Vfpcbul5gUg20tMC+/+M bi3NVBF959dI9IsYA/NwsttNSFuTLLHdBNtBli425QNh6fk/qbvQASQ== X-Google-Smtp-Source: APXvYqwNGsaC9/c0WXyo61C2WueGhPBhTSKVR1juCwEjc/xyhHoQknfJ+wVY6js5XcG7JQZRgNwiPuc= X-Received: by 2002:a63:7d49:: with SMTP id m9mr16491132pgn.161.1563208806059; Mon, 15 Jul 2019 09:40:06 -0700 (PDT) Date: Mon, 15 Jul 2019 09:39:54 -0700 In-Reply-To: <20190715163956.204061-1-sdf@google.com> Message-Id: <20190715163956.204061-4-sdf@google.com> Mime-Version: 1.0 References: <20190715163956.204061-1-sdf@google.com> X-Mailer: git-send-email 2.22.0.510.g264f2c817a-goog Subject: [PATCH bpf 3/5] selftests/bpf: rename verifier/wide_store.c to verifier/wide_access.c From: Stanislav Fomichev To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, Stanislav Fomichev , Yonghong Song Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Move the file and rename internal BPF_SOCK_ADDR define to BPF_SOCK_ADDR_STORE. This selftest will be extended in the next commit with the wide loads. Cc: Yonghong Song Signed-off-by: Stanislav Fomichev --- .../selftests/bpf/verifier/wide_access.c | 36 +++++++++++++++++++ .../selftests/bpf/verifier/wide_store.c | 36 ------------------- 2 files changed, 36 insertions(+), 36 deletions(-) create mode 100644 tools/testing/selftests/bpf/verifier/wide_access.c delete mode 100644 tools/testing/selftests/bpf/verifier/wide_store.c diff --git a/tools/testing/selftests/bpf/verifier/wide_access.c b/tools/testing/selftests/bpf/verifier/wide_access.c new file mode 100644 index 000000000000..3ac97328432f --- /dev/null +++ b/tools/testing/selftests/bpf/verifier/wide_access.c @@ -0,0 +1,36 @@ +#define BPF_SOCK_ADDR_STORE(field, off, res, err) \ +{ \ + "wide store to bpf_sock_addr." #field "[" #off "]", \ + .insns = { \ + BPF_MOV64_IMM(BPF_REG_0, 1), \ + BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, \ + offsetof(struct bpf_sock_addr, field[off])), \ + BPF_EXIT_INSN(), \ + }, \ + .result = res, \ + .prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR, \ + .expected_attach_type = BPF_CGROUP_UDP6_SENDMSG, \ + .errstr = err, \ +} + +/* user_ip6[0] is u64 aligned */ +BPF_SOCK_ADDR_STORE(user_ip6, 0, ACCEPT, + NULL), +BPF_SOCK_ADDR_STORE(user_ip6, 1, REJECT, + "invalid bpf_context access off=12 size=8"), +BPF_SOCK_ADDR_STORE(user_ip6, 2, ACCEPT, + NULL), +BPF_SOCK_ADDR_STORE(user_ip6, 3, REJECT, + "invalid bpf_context access off=20 size=8"), + +/* msg_src_ip6[0] is _not_ u64 aligned */ +BPF_SOCK_ADDR_STORE(msg_src_ip6, 0, REJECT, + "invalid bpf_context access off=44 size=8"), +BPF_SOCK_ADDR_STORE(msg_src_ip6, 1, ACCEPT, + NULL), +BPF_SOCK_ADDR_STORE(msg_src_ip6, 2, REJECT, + "invalid bpf_context access off=52 size=8"), +BPF_SOCK_ADDR_STORE(msg_src_ip6, 3, REJECT, + "invalid bpf_context access off=56 size=8"), + +#undef BPF_SOCK_ADDR_STORE diff --git a/tools/testing/selftests/bpf/verifier/wide_store.c b/tools/testing/selftests/bpf/verifier/wide_store.c deleted file mode 100644 index 8fe99602ded4..000000000000 --- a/tools/testing/selftests/bpf/verifier/wide_store.c +++ /dev/null @@ -1,36 +0,0 @@ -#define BPF_SOCK_ADDR(field, off, res, err) \ -{ \ - "wide store to bpf_sock_addr." #field "[" #off "]", \ - .insns = { \ - BPF_MOV64_IMM(BPF_REG_0, 1), \ - BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, \ - offsetof(struct bpf_sock_addr, field[off])), \ - BPF_EXIT_INSN(), \ - }, \ - .result = res, \ - .prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR, \ - .expected_attach_type = BPF_CGROUP_UDP6_SENDMSG, \ - .errstr = err, \ -} - -/* user_ip6[0] is u64 aligned */ -BPF_SOCK_ADDR(user_ip6, 0, ACCEPT, - NULL), -BPF_SOCK_ADDR(user_ip6, 1, REJECT, - "invalid bpf_context access off=12 size=8"), -BPF_SOCK_ADDR(user_ip6, 2, ACCEPT, - NULL), -BPF_SOCK_ADDR(user_ip6, 3, REJECT, - "invalid bpf_context access off=20 size=8"), - -/* msg_src_ip6[0] is _not_ u64 aligned */ -BPF_SOCK_ADDR(msg_src_ip6, 0, REJECT, - "invalid bpf_context access off=44 size=8"), -BPF_SOCK_ADDR(msg_src_ip6, 1, ACCEPT, - NULL), -BPF_SOCK_ADDR(msg_src_ip6, 2, REJECT, - "invalid bpf_context access off=52 size=8"), -BPF_SOCK_ADDR(msg_src_ip6, 3, REJECT, - "invalid bpf_context access off=56 size=8"), - -#undef BPF_SOCK_ADDR From patchwork Mon Jul 15 16:39:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1132115 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: incoming-bpf@patchwork.ozlabs.org Delivered-To: patchwork-incoming-bpf@bilbo.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=bpf-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="HiG90D6O"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 45nTls6sx5z9sDQ for ; Tue, 16 Jul 2019 02:40:09 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731269AbfGOQkJ (ORCPT ); Mon, 15 Jul 2019 12:40:09 -0400 Received: from mail-pg1-f202.google.com ([209.85.215.202]:37414 "EHLO mail-pg1-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731259AbfGOQkJ (ORCPT ); Mon, 15 Jul 2019 12:40:09 -0400 Received: by mail-pg1-f202.google.com with SMTP id n9so7396873pgq.4 for ; Mon, 15 Jul 2019 09:40:09 -0700 (PDT) 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=4/lhOxHYSoVa00N4hV5HTOW6iAH34TOVHfJ1YdAnqVc=; b=HiG90D6OKwsznGztDnHSD5e2gM8jEansA4ZG1AXELsO2+QnASoFDxqACN9HvFQHDDr taSj9ZJy61b9SNMntah4yrJqr3xNhS7SfALtKljW/cREzXZq8lS7Lr4+TXzYMT6BsIqF Qh2HdAhljZRd9Gdp+Ge2QGnm2Lc8mPBXttYG5oN02MOSVqXo2hxW2dfMiqN5foJ41OQQ 1RnnCMIJobHFI4x7PvpQuAibUbvhZL1mF9gfUfCWqKlARXsP7WDHXEVs0VxWICkuSHjA ktje1D0zo+/Mho/klTq/4OeKBpvdkezm+nkPKLx0ye10OaxTxzsXLEUZf3HOGr5U1Ilw Ihpg== 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=4/lhOxHYSoVa00N4hV5HTOW6iAH34TOVHfJ1YdAnqVc=; b=lFnqiMYS7Dy61+CJtv/KGBI59r0G5qr8o25JNWSNiU8hTsI2JDepD+YwoMM7cPeh3G 5fjvAMDVj+tT8aeRZEpp924bMGZuyD7M3XOrGQV8rtfF5NM5htjonf6v7AIhppS8i3RX /DXMRcU/gOiZyyElk7NxsaNNX/UiiuPnbPWY8HYV+S0PqN3N91OavUiEguC8IXbTtSb5 6uYUSau+GkHO0IiBTqHwCnGGOEUOCfIdr1SB0rPOMPQty+d8EZ0lpc26I+E/2MyxEsFr P8oST6L4LCNRHs3wV9r1n913C/A68L87fHD7rluUhuYKGJGIfh9YROxVyQZ8nFvOyOWg vc8Q== X-Gm-Message-State: APjAAAUR9k2CVTPE5lxb1ZQpALzmSQ6JwlK8pIbt9b+dIpq3pKVZD7YP e1q4Bqu7HmvLQX4DBl1eAOjWi3I= X-Google-Smtp-Source: APXvYqzhp0sVGa8TEkl0+a7QDelm+b6vnwU2eObG+o6sjXihgr2lsRwaOEiI/802/Co6yHx5aX6znjQ= X-Received: by 2002:a65:42c3:: with SMTP id l3mr27762384pgp.372.1563208808427; Mon, 15 Jul 2019 09:40:08 -0700 (PDT) Date: Mon, 15 Jul 2019 09:39:55 -0700 In-Reply-To: <20190715163956.204061-1-sdf@google.com> Message-Id: <20190715163956.204061-5-sdf@google.com> Mime-Version: 1.0 References: <20190715163956.204061-1-sdf@google.com> X-Mailer: git-send-email 2.22.0.510.g264f2c817a-goog Subject: [PATCH bpf 4/5] selftests/bpf: add selftests for wide loads From: Stanislav Fomichev To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, Stanislav Fomichev , Yonghong Song Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org Mirror existing wide store tests with wide loads. The only significant difference is expected error string. Cc: Yonghong Song Signed-off-by: Stanislav Fomichev --- .../selftests/bpf/verifier/wide_access.c | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tools/testing/selftests/bpf/verifier/wide_access.c b/tools/testing/selftests/bpf/verifier/wide_access.c index 3ac97328432f..ccade9312d21 100644 --- a/tools/testing/selftests/bpf/verifier/wide_access.c +++ b/tools/testing/selftests/bpf/verifier/wide_access.c @@ -34,3 +34,40 @@ BPF_SOCK_ADDR_STORE(msg_src_ip6, 3, REJECT, "invalid bpf_context access off=56 size=8"), #undef BPF_SOCK_ADDR_STORE + +#define BPF_SOCK_ADDR_LOAD(field, off, res, err) \ +{ \ + "wide load from bpf_sock_addr." #field "[" #off "]", \ + .insns = { \ + BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_1, \ + offsetof(struct bpf_sock_addr, field[off])), \ + BPF_MOV64_IMM(BPF_REG_0, 1), \ + BPF_EXIT_INSN(), \ + }, \ + .result = res, \ + .prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR, \ + .expected_attach_type = BPF_CGROUP_UDP6_SENDMSG, \ + .errstr = err, \ +} + +/* user_ip6[0] is u64 aligned */ +BPF_SOCK_ADDR_LOAD(user_ip6, 0, ACCEPT, + NULL), +BPF_SOCK_ADDR_LOAD(user_ip6, 1, REJECT, + "invalid bpf_context access off=12 size=8"), +BPF_SOCK_ADDR_LOAD(user_ip6, 2, ACCEPT, + NULL), +BPF_SOCK_ADDR_LOAD(user_ip6, 3, REJECT, + "invalid bpf_context access off=20 size=8"), + +/* msg_src_ip6[0] is _not_ u64 aligned */ +BPF_SOCK_ADDR_LOAD(msg_src_ip6, 0, REJECT, + "invalid bpf_context access off=44 size=8"), +BPF_SOCK_ADDR_LOAD(msg_src_ip6, 1, ACCEPT, + NULL), +BPF_SOCK_ADDR_LOAD(msg_src_ip6, 2, REJECT, + "invalid bpf_context access off=52 size=8"), +BPF_SOCK_ADDR_LOAD(msg_src_ip6, 3, REJECT, + "invalid bpf_context access off=56 size=8"), + +#undef BPF_SOCK_ADDR_LOAD From patchwork Mon Jul 15 16:39:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1132117 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="JoI8ajpX"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 45nTlw6mgDz9sDQ for ; Tue, 16 Jul 2019 02:40:12 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731385AbfGOQkM (ORCPT ); Mon, 15 Jul 2019 12:40:12 -0400 Received: from mail-pf1-f201.google.com ([209.85.210.201]:39109 "EHLO mail-pf1-f201.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731220AbfGOQkL (ORCPT ); Mon, 15 Jul 2019 12:40:11 -0400 Received: by mail-pf1-f201.google.com with SMTP id 6so10567227pfi.6 for ; Mon, 15 Jul 2019 09:40:11 -0700 (PDT) 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=74ekQLUlOcUHWDfNU+9U1KuKKcCpv3glEkmfGQfN1Vg=; b=JoI8ajpXbNJnJzIZmkUjiwpxQGqLLpeyT3ezcjQds8Jbblz/2dYpYPx6iS60MdT8wF fjO0hY3v5hERwI3YY67gSJ3Wm8Ndlacf/Z3L704zCaFXz0obMni7xmR9hc+eMkLrVqqp Kko7/HDTg2hHEzjH1NSGWhdvrjFI0puwyhrr8uzfuPTBc3MQZtj9Nfw25vyELv2rzbG1 ZuuREDY40nlp8FNY5BZG7LEmPiIamkiucM9AOTZhDnlvF8zN6+ncBO61hSV2h/g9hW9h 8lqaIk2Hu1F+YlmNhASxIxa1YSFiIH97Zu4MlK3/JFdoszZPcqMKhBp3q6mcjtaN2FCC DA3A== 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=74ekQLUlOcUHWDfNU+9U1KuKKcCpv3glEkmfGQfN1Vg=; b=c1+ENmFR5pcNLG98strrbcK4oRgvhhZ3DjVDMqhbcpr6ns/kuAS/+TxiVa0eTIhBuz rnNUWrJShabgBVZ8dIH7E++160INknYHpwPYcGjPpZlwp2KgKADYEwSlDatjeuDKiuvt yJaOwyrxDsvjJKktKJBKz7kOAMQe8RO/MPJ9rxOWqUlMsMgRUp1D/J3GtJ8e9K9komUE 0Q5qubb03NQA4Phd45gVr2yJnSHKwJjeA4+2b+c+CeaXKr5geGV4rjM/mZY26ih7K0UY B6D91+VGf6WTQKqqhK8Za6+8w2Dur8AarI2uBxakLOzMwiYnPkQKrd7aDz4u+ahhyeQY budw== X-Gm-Message-State: APjAAAU+E/4snSDb+W+Zw7uWgFmGCc9pWhqA9GITNQvq7sVsptIqBsat KSr/TSAT15w9FNygzK5gKXMXFFM7Z7gNmP1h8wGh/AmS6qSRF2oTFn11Be0phOqfVuN/MMOr3Z3 ey59jEcGny4JOJ37/jktE1xpNOO1GGJpPmTmTHgmI/kq4ihBg9parPA== X-Google-Smtp-Source: APXvYqxSVsKsmpR36+lcf2MCEvIWuy1Ov0lc0DFVnJpwwpuEFGgum/0G7E+VJHWGd6QT3T75nVfZbt8= X-Received: by 2002:a65:6288:: with SMTP id f8mr23574580pgv.292.1563208810662; Mon, 15 Jul 2019 09:40:10 -0700 (PDT) Date: Mon, 15 Jul 2019 09:39:56 -0700 In-Reply-To: <20190715163956.204061-1-sdf@google.com> Message-Id: <20190715163956.204061-6-sdf@google.com> Mime-Version: 1.0 References: <20190715163956.204061-1-sdf@google.com> X-Mailer: git-send-email 2.22.0.510.g264f2c817a-goog Subject: [PATCH bpf 5/5] bpf: sync bpf.h to tools/ From: Stanislav Fomichev To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, Stanislav Fomichev , Yonghong Song Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Update bpf_sock_addr comments to indicate support for 8-byte reads from user_ip6 and msg_src_ip6. Cc: Yonghong Song Signed-off-by: Stanislav Fomichev --- tools/include/uapi/linux/bpf.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index f506c68b2612..1f61374fcf81 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -3245,7 +3245,7 @@ struct bpf_sock_addr { __u32 user_ip4; /* Allows 1,2,4-byte read and 4-byte write. * Stored in network byte order. */ - __u32 user_ip6[4]; /* Allows 1,2,4-byte read and 4,8-byte write. + __u32 user_ip6[4]; /* Allows 1,2,4,8-byte read and 4,8-byte write. * Stored in network byte order. */ __u32 user_port; /* Allows 4-byte read and write. @@ -3257,7 +3257,7 @@ struct bpf_sock_addr { __u32 msg_src_ip4; /* Allows 1,2,4-byte read and 4-byte write. * Stored in network byte order. */ - __u32 msg_src_ip6[4]; /* Allows 1,2,4-byte read and 4,8-byte write. + __u32 msg_src_ip6[4]; /* Allows 1,2,4,8-byte read and 4,8-byte write. * Stored in network byte order. */ __bpf_md_ptr(struct bpf_sock *, sk);