From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0670B183CB0 for ; Tue, 10 Sep 2024 07:42:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1725954129; cv=none; b=Uo6ihv2fhbvGxt394SFHhlsbIcVPo757XOkgyon7EICjtbnrfRDMOAue0b0rtTGTPnLrDZG5Jk1SqdBuCP4wNQAc1BgoqkyDAWCcsUHDd5xXo3/0klh1l3dmpH87tNQDqsOJyjq1GgT3/66pswnnt6oLNx4ngp0doLiv6uPbJOY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1725954129; c=relaxed/simple; bh=Qyl+jeM29UcIUIpBkMaXSrvyQbplQx2dePM9hleo3fk=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=tNCGiuvth5irkxR52aU84kNK87nOWrOzIoKfUNcF2yall70x+mFn675EnqCcm1y5/a7ZfEt2mjJ+swoGELRBkVUeF0LHyR6LYoyPud9bsLh69N8DHxN7qfOVmmjp4mI8eURgZtF+9GBOx5kdMJLHAKRgp1mZqP2Ff2PVsuu/Dhs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=UMvXBmn8; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="UMvXBmn8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1725954126; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=vuOGAWKRYAVrkFr1NxQHAvJfBsIuxorao5YMycZLxA4=; b=UMvXBmn8SzRaGIHUSWmfuIZ/1JctGV5jM1YFtz+TV+NGoIjCKpm0dC3YB16fIsbTXrtpof yDQtxIuKDW/DPBLOBy+fypv19pvqL67OYdRiuL+1kfhEuXTDRNRSJhcEmOTO9981iI4Z3E l3yjDnD2RzsWs/bXOkddKy4aXaPiFXE= Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-249-r28C7SC4NU66IuguIwDKaw-1; Tue, 10 Sep 2024 03:42:05 -0400 X-MC-Unique: r28C7SC4NU66IuguIwDKaw-1 Received: by mail-ej1-f69.google.com with SMTP id a640c23a62f3a-a8d34e41915so26340066b.2 for ; Tue, 10 Sep 2024 00:42:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725954123; x=1726558923; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vuOGAWKRYAVrkFr1NxQHAvJfBsIuxorao5YMycZLxA4=; b=v8pjzA50333LuuApgqeJEwUoxil0gRSZs1JSFd+LzCaqcJS4LnQnwcZNpQh0ld5Uai sgrNJGJ53d8DOeGWzME1vQqEIHFULR641k6bQey7Z8hfu31AnHf2tu7CagL1A0xUvHie mYJPLSLHztHKH8n2JoJJkogIr9/hteRGGSLTrTE2GMEmJt/P/IL4xpxBdPim50ixBgTx qeN189jpAsulzgYBod27dH7ygFZDVTkT8/L2UK+CafnLwMJ081xids1IQArfH7NXI+5q HjHeVN5Z4RtMbzvZh8YAPSVY+m+CBA8I3vH+78cIsghmhbWo1VTj0jY22gCtqwwYTyC0 TysA== X-Gm-Message-State: AOJu0YzpUQEdw0YEWZ5v/4S7nLOG1YcdF7+a6A3zM8cdHIaFkQA1rCrT GmBgz3vav0mDHUY5XTlqcHb1pz1RReTrlah0Te5MN5C4nGrJuVt44ysAMJosRTEBXLQoaoPE2Ds Q7tVX50K0xDy1HjQqtz3wa6qE8XWGUrI5VStYHFWyXoon3nsHv+JkYQ== X-Received: by 2002:a17:906:d555:b0:a86:9fbd:5168 with SMTP id a640c23a62f3a-a8a885be012mr934459866b.10.1725954122688; Tue, 10 Sep 2024 00:42:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFlH0u6x8kCMDvPcDbginVMnhXO4lApiSQpceWmr1sBGfZmmYznkDhVeEEVWw9Lf1VtTtVaBw== X-Received: by 2002:a17:906:d555:b0:a86:9fbd:5168 with SMTP id a640c23a62f3a-a8a885be012mr934451466b.10.1725954121495; Tue, 10 Sep 2024 00:42:01 -0700 (PDT) Received: from alrua-x1.borgediget.toke.dk ([2a0c:4d80:42:443::2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a8d25cf03fcsm438718266b.162.2024.09.10.00.42.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2024 00:42:01 -0700 (PDT) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 18BC7152C346; Tue, 10 Sep 2024 09:42:00 +0200 (CEST) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: Florian Kauer , Alexei Starovoitov , Daniel Borkmann , "David S. Miller" , Jakub Kicinski , Jesper Dangaard Brouer , John Fastabend , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , David Ahern , Hangbin Liu , Mykola Lysenko , Shuah Khan Cc: netdev@vger.kernel.org, bpf@vger.kernel.org, linux-kernel@vger.kernel.org, Jesper Dangaard Brouer , linux-kselftest@vger.kernel.org, Florian Kauer Subject: Re: [PATCH net v3 2/2] bpf: selftests: send packet to devmap redirect XDP In-Reply-To: <20240909-devel-koalo-fix-ingress-ifindex-v3-2-66218191ecca@linutronix.de> References: <20240909-devel-koalo-fix-ingress-ifindex-v3-0-66218191ecca@linutronix.de> <20240909-devel-koalo-fix-ingress-ifindex-v3-2-66218191ecca@linutronix.de> X-Clacks-Overhead: GNU Terry Pratchett Date: Tue, 10 Sep 2024 09:41:59 +0200 Message-ID: <87seu8dkfs.fsf@toke.dk> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain Florian Kauer writes: > The current xdp_devmap_attach test attaches a program > that redirects to another program via devmap. > > It is, however, never executed, so do that to catch > any bugs that might occur during execution. > > Also, execute the same for a veth pair so that we > also cover the non-generic path. > > Warning: Running this without the bugfix in this series > will likely crash your system. > > Signed-off-by: Florian Kauer > --- > .../selftests/bpf/prog_tests/xdp_devmap_attach.c | 114 +++++++++++++++++++-- > 1 file changed, 108 insertions(+), 6 deletions(-) > > diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c b/tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c > index ce6812558287..3da45f719736 100644 > --- a/tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c > +++ b/tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c > @@ -1,6 +1,9 @@ > // SPDX-License-Identifier: GPL-2.0 > +#include > #include > #include > +#include > +#include > #include > > #include "test_xdp_devmap_helpers.skel.h" > @@ -17,7 +20,7 @@ static void test_xdp_with_devmap_helpers(void) > .ifindex = IFINDEX_LO, > }; > __u32 len = sizeof(info); > - int err, dm_fd, map_fd; > + int err, dm_fd, dm_fd_redir, map_fd; > __u32 idx = 0; > > > @@ -25,14 +28,11 @@ static void test_xdp_with_devmap_helpers(void) > if (!ASSERT_OK_PTR(skel, "test_xdp_with_devmap_helpers__open_and_load")) > return; > > - dm_fd = bpf_program__fd(skel->progs.xdp_redir_prog); > - err = bpf_xdp_attach(IFINDEX_LO, dm_fd, XDP_FLAGS_SKB_MODE, NULL); > + dm_fd_redir = bpf_program__fd(skel->progs.xdp_redir_prog); > + err = bpf_xdp_attach(IFINDEX_LO, dm_fd_redir, XDP_FLAGS_SKB_MODE, NULL); > if (!ASSERT_OK(err, "Generic attach of program with 8-byte devmap")) > goto out_close; > > - err = bpf_xdp_detach(IFINDEX_LO, XDP_FLAGS_SKB_MODE, NULL); > - ASSERT_OK(err, "XDP program detach"); > - > dm_fd = bpf_program__fd(skel->progs.xdp_dummy_dm); > map_fd = bpf_map__fd(skel->maps.dm_ports); > err = bpf_prog_get_info_by_fd(dm_fd, &info, &len); > @@ -47,6 +47,23 @@ static void test_xdp_with_devmap_helpers(void) > ASSERT_OK(err, "Read devmap entry"); > ASSERT_EQ(info.id, val.bpf_prog.id, "Match program id to devmap entry prog_id"); > > + /* send a packet to trigger any potential bugs in there */ > + char data[10] = {}; > + DECLARE_LIBBPF_OPTS(bpf_test_run_opts, opts, > + .data_in = &data, > + .data_size_in = 10, > + .flags = BPF_F_TEST_XDP_LIVE_FRAMES, > + .repeat = 1, > + ); > + err = bpf_prog_test_run_opts(dm_fd_redir, &opts); > + ASSERT_OK(err, "XDP test run"); > + > + /* wait for the packets to be flushed */ > + kern_sync_rcu(); > + > + err = bpf_xdp_detach(IFINDEX_LO, XDP_FLAGS_SKB_MODE, NULL); > + ASSERT_OK(err, "XDP program detach"); > + > /* can not attach BPF_XDP_DEVMAP program to a device */ > err = bpf_xdp_attach(IFINDEX_LO, dm_fd, XDP_FLAGS_SKB_MODE, NULL); > if (!ASSERT_NEQ(err, 0, "Attach of BPF_XDP_DEVMAP program")) > @@ -124,6 +141,88 @@ static void test_xdp_with_devmap_frags_helpers(void) > test_xdp_with_devmap_frags_helpers__destroy(skel); > } > > +static void test_xdp_with_devmap_helpers_veth(void) > +{ > + struct test_xdp_with_devmap_helpers *skel = NULL; > + struct bpf_prog_info info = {}; > + struct bpf_devmap_val val = {}; > + struct nstoken *nstoken = NULL; > + __u32 len = sizeof(info); > + int err, dm_fd, dm_fd_redir, map_fd, ifindex_dst; > + __u32 idx = 0; > + > + SYS(out_close, "ip netns add testns"); > + nstoken = open_netns("testns"); > + if (!ASSERT_OK_PTR(nstoken, "setns")) > + goto out_close; > + > + SYS(out_close, "ip link add veth_src type veth peer name veth_dst"); > + SYS(out_close, "ip link set dev veth_src up"); > + SYS(out_close, "ip link set dev veth_dst up"); > + > + val.ifindex = if_nametoindex("veth_src"); > + ifindex_dst = if_nametoindex("veth_dst"); > + if (!ASSERT_NEQ(val.ifindex, 0, "val.ifindex") || > + !ASSERT_NEQ(ifindex_dst, 0, "ifindex_dst")) > + goto out_close; > + > + skel = test_xdp_with_devmap_helpers__open_and_load(); > + if (!ASSERT_OK_PTR(skel, "test_xdp_with_devmap_helpers__open_and_load")) > + return; This should be 'goto out_close'. -Toke