Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp1651173rwr; Fri, 5 May 2023 18:34:45 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7ETsdLTBF2gqtKu2F/zej7joLYvO51B/wHU7Pbhmf8lnoMR7sFDzhWE+WnlB/MHOPJfK7l X-Received: by 2002:a05:6a20:a699:b0:f5:607f:b78 with SMTP id ba25-20020a056a20a69900b000f5607f0b78mr3862415pzb.27.1683336885387; Fri, 05 May 2023 18:34:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683336885; cv=none; d=google.com; s=arc-20160816; b=m26QrSxbxbdpjrhpKsJsmJ3TnP0jWz5/ZwvFu0YTvLfwROQUCkp7oI01zfI5Jhs8xI Me3jnySNI+jDXWpq60lx+yKzkC8NvdzywfKh8xF9J0NW8zA1xitRkCXCH4ScW0zcj/P+ +aY4fa0JBQqKEVPtxSw+ADA2XhWImTRG9YGjDpLf3Z6iV9yQzWSokZrfGvuZdDC2EM7W 0Z540r7IVBkz75XzLVz+lfzKpAfukoOU6IbsJDUHEa9HOf2wF+Ld+vrCQsjd+hmZn4VL /ypJCWjJhJnQBFQ1ZrnCQLVjZKjq8XSHTwTRsQOOoMqe+xHoV5X+ExEAkrCUgVXomjSN 92Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=HpBXaqycDpeF1iiIRkKkU5q/FIeyp/QkzxqhW0Xulus=; b=IgqM9u22bLrelmN/IUR7uhnZEmeYWTm8yR2Aewu1j+9q5S6k4G0efJTSoMbU8bX0hn tMpV6w47jfXlj/fj4ngWgxmdmWPxgsjYMIBioNzWqpOlXf8shWeCL4VVnP7K5JuexSAc 13ApLsrUlw9VPNYvSg4+LDvNCXwr+SRj70RVUtPlVLdeCIEKFzWiAzh3P2QI6LcoWJYC nJr+I3CXAYOOxKXa+jTNbYrhkkzxw0KYMKgf3SzdpCowWVlDp7xiCMWMJVDSCDNOaxRl 0QySD1ImYgBlPJbZ+76kIlALGl6Xy890cRjW66+c5D4Nv2478G1Gz1hMsJHoU5g0TJgA a0vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=EjAImXES; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v1-20020a626101000000b0063d238b6049si3276752pfb.286.2023.05.05.18.34.33; Fri, 05 May 2023 18:34:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=EjAImXES; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232634AbjEFBcL (ORCPT + 99 others); Fri, 5 May 2023 21:32:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54642 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231628AbjEFBb5 (ORCPT ); Fri, 5 May 2023 21:31:57 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA8C676BC for ; Fri, 5 May 2023 18:31:54 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-b9a6f15287eso21527475276.1 for ; Fri, 05 May 2023 18:31:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683336714; x=1685928714; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=HpBXaqycDpeF1iiIRkKkU5q/FIeyp/QkzxqhW0Xulus=; b=EjAImXESIDfPwZ9hTfrYy5t7T/PaXqRElM81DJgaDdmyku00koV3RJuwLs0CjXuMrH QqxKeSjl2DRpviPJdfQpgpuUsjdK2dRS7YzYVp3Q6kjC7b122kwMli7b1PpS2xIWnG3Q rSmea63nSwQhq/99fsm8Qu80HuHARS9brKGSc2t503R704eAKxAD/8zpSXAKI2e5luGD dr7o6tyeENUuU3k8Fjq/x2rsYdMCccizaFRzIdNIjxamWCQEzd9UCHG9+5x+nLpgQFKd R1LtLS36OG44zs6if6mN0eloUv/VbbsSCd28EmizmI3nMHsop4hqGEEoaeptveFR4ra1 uhMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683336714; x=1685928714; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=HpBXaqycDpeF1iiIRkKkU5q/FIeyp/QkzxqhW0Xulus=; b=irygDwWH/mLeVBkbobifQTCwWdCkETMqhWtEHEZCqQi3JQGhD8WoEM7mEDSDbo0Oxx IgkHrZMeosbZdBgb47MDr+pNPdNmJZylgz2mxVN7VWeVEN+8dyHyfufqJKAE4xU8EizP xJRL5TP1WtaS3BOqR7KUoGjjl07g2Q000nXK/QhiSRirt3lXLv+ZMw7e6IuEyUJBAPgi Bjzum6K9M1tNH7Ozdq3/IwJdMo5h9BgGXiJ2Sft55sq+ot3i3cl8jNAyQ8iYZpl+e129 NpSD4Y2bTvD0Lv0sZWTjsvfvAx4NJWgIFn38jnztq0tdwGKsgFvYbIaI7ENqYAXbEu4W w7eQ== X-Gm-Message-State: AC+VfDwndsxBIE51t+acDJkjXHpG8M/p00YwMLJh5cEyXLJ5J87t8L0v BfjuDFdYwWNQrzQqRBZ+eJ5xbA0j3tQ= X-Received: from drosen.mtv.corp.google.com ([2620:15c:211:201:6826:a1a:a426:bb4a]) (user=drosen job=sendgmr) by 2002:a25:6583:0:b0:b8e:efd8:f2c with SMTP id z125-20020a256583000000b00b8eefd80f2cmr1995609ybb.1.1683336713910; Fri, 05 May 2023 18:31:53 -0700 (PDT) Date: Fri, 5 May 2023 18:31:34 -0700 In-Reply-To: <20230506013134.2492210-1-drosen@google.com> Mime-Version: 1.0 References: <20230506013134.2492210-1-drosen@google.com> X-Mailer: git-send-email 2.40.1.521.gf1e218fcd8-goog Message-ID: <20230506013134.2492210-6-drosen@google.com> Subject: [PATCH bpf-next v3 5/5] selftests/bpf: Accept mem from dynptr in helper funcs From: Daniel Rosenberg To: bpf@vger.kernel.org Cc: Alexei Starovoitov , Daniel Borkmann , John Fastabend , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan , Jonathan Corbet , Joanne Koong , Mykola Lysenko , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kernel-team@android.com, Daniel Rosenberg Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This ensures that buffers retrieved from dynptr_data are allowed to be passed in to helpers that take mem, like bpf_strncmp Signed-off-by: Daniel Rosenberg --- .../testing/selftests/bpf/prog_tests/dynptr.c | 1 + .../selftests/bpf/progs/dynptr_success.c | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/dynptr.c b/tools/testing/selftests/bpf/prog_tests/dynptr.c index 13d4b9ab16e7..7cfac53c0d58 100644 --- a/tools/testing/selftests/bpf/prog_tests/dynptr.c +++ b/tools/testing/selftests/bpf/prog_tests/dynptr.c @@ -27,6 +27,7 @@ static struct { {"test_dynptr_is_rdonly", SETUP_SKB_PROG}, {"test_dynptr_clone", SETUP_SKB_PROG}, {"test_dynptr_skb_no_buff", SETUP_SKB_PROG}, + {"test_dynptr_skb_strcmp", SETUP_SKB_PROG}, }; static void verify_success(const char *prog_name, enum test_setup_type setup_type) diff --git a/tools/testing/selftests/bpf/progs/dynptr_success.c b/tools/testing/selftests/bpf/progs/dynptr_success.c index d299ef3b4d1f..0c053976f8f9 100644 --- a/tools/testing/selftests/bpf/progs/dynptr_success.c +++ b/tools/testing/selftests/bpf/progs/dynptr_success.c @@ -522,3 +522,24 @@ int test_dynptr_skb_no_buff(struct __sk_buff *skb) return !!data; } + +SEC("?cgroup_skb/egress") +int test_dynptr_skb_strcmp(struct __sk_buff *skb) +{ + struct bpf_dynptr ptr; + char *data; + + if (bpf_dynptr_from_skb(skb, 0, &ptr)) { + err = 1; + return 1; + } + + /* This may return NULL. SKB may require a buffer */ + data = bpf_dynptr_slice(&ptr, 0, NULL, 10); + if (data) { + bpf_strncmp(data, 10, "foo"); + return 1; + } + + return 1; +} -- 2.40.1.521.gf1e218fcd8-goog