From: David Gibson <david@gibson.dropbear.id.au>
To: Stefano Brivio <sbrivio@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>, passt-dev@passt.top
Subject: Re: [PATCH v8 07/30] arp: Convert to iov_tail
Date: Wed, 13 Aug 2025 12:21:28 +1000 [thread overview]
Message-ID: <aJv2qBHRIN26wjVl@zatzit> (raw)
In-Reply-To: <20250807151132.07d1a154@elisabeth>
[-- Attachment #1: Type: text/plain, Size: 3169 bytes --]
On Thu, Aug 07, 2025 at 03:11:32PM +0200, Stefano Brivio wrote:
> On Thu, 7 Aug 2025 14:58:34 +0200
> Laurent Vivier <lvivier@redhat.com> wrote:
>
> > On 06/08/2025 04:17, David Gibson wrote:
> > > On Tue, Aug 05, 2025 at 05:46:05PM +0200, Laurent Vivier wrote:
> > >> Use packet_data() and extract headers using IOV_REMOVE_HEADER()
> > >> rather than packet_get().
> > >>
> > >> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> > >> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> > >
> > > Still R-b, but making an observation below that's perhaps more
> > > relevant to the previous patch.
> > >
> > >> ---
> > >> arp.c | 12 +++++++++---
> > >> packet.c | 1 -
> > >> 2 files changed, 9 insertions(+), 4 deletions(-)
> > >>
> > >> diff --git a/arp.c b/arp.c
> > >> index 9f1fedeafec0..b3ac42082841 100644
> > >> --- a/arp.c
> > >> +++ b/arp.c
> > >> @@ -74,14 +74,20 @@ int arp(const struct ctx *c, const struct pool *p)
> > >> struct arphdr ah;
> > >> struct arpmsg am;
> > >> } __attribute__((__packed__)) resp;
> > >> + struct arphdr ah_storage;
> > >> + struct ethhdr eh_storage;
> > >> + struct arpmsg am_storage;
> > >> const struct ethhdr *eh;
> > >> const struct arphdr *ah;
> > >> const struct arpmsg *am;
> > >> + struct iov_tail data;
> > >>
> > >> - eh = packet_get(p, 0, 0, sizeof(*eh), NULL);
> > >> - ah = packet_get(p, 0, sizeof(*eh), sizeof(*ah), NULL);
> > >> - am = packet_get(p, 0, sizeof(*eh) + sizeof(*ah), sizeof(*am), NULL);
> > >> + if (!packet_data(p, 0, &data))
> > >> + return -1;
> > >
> > > The only case where packet_data() will return false is if you give it
> > > a bad packet index. That should never happen, by construction. So
> > > I'm wondering if that should be an ASSSERT() in packet_data() rather
> > > than a return value.
> >
> > Stefano, why do you think of this idea?
>
> Well, yes, it *should* be by construction, but somewhere we might
> eventually calculate that index (indirectly) using data we receive, and
> I don't think we want to ASSERT() if somebody finds a way to make us
> calculate a bad index.
I really can't imagine a scenario where we'd want to do that. The
order of things in the packet pool is entirely arbitrary, so anything
from outside can't have any data that would be relevant to finding an
index. So, in all cases we're either passing a (valid) index from one
part of our code to another, or scanning the entire pool. Any failure
in either case would represent a pretty unlikely bug on our side,
which makes ASSERT() the appropriate choice IMO.
> It's not a strong objection against ASSERT(), though. It makes the code
> marginally more terse and might help us find issues, too. I just have a
> slight preference for a return value in this case anyway (better to
> dodge a security issue and hide a functional issue than risking hitting
> both, I think).
>
--
David Gibson (he or they) | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you, not the other way
| around.
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2025-08-13 2:29 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-05 15:45 [PATCH v8 00/30] Introduce discontiguous frames management Laurent Vivier
2025-08-05 15:45 ` [PATCH v8 01/30] arp: Don't mix incoming and outgoing buffers Laurent Vivier
2025-08-05 15:46 ` [PATCH v8 02/30] iov: Introduce iov_tail_clone() and iov_tail_drop() Laurent Vivier
2025-08-06 1:32 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 03/30] iov: Update IOV_REMOVE_HEADER() and IOV_PEEK_HEADER() Laurent Vivier
2025-08-06 1:45 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 04/30] tap: Use iov_tail with tap_add_packet() Laurent Vivier
2025-08-06 1:56 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 05/30] packet: Use iov_tail with packet_add() Laurent Vivier
2025-08-05 15:46 ` [PATCH v8 06/30] packet: Add packet_data() Laurent Vivier
2025-08-06 2:14 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 07/30] arp: Convert to iov_tail Laurent Vivier
2025-08-06 2:17 ` David Gibson
2025-08-07 12:58 ` Laurent Vivier
2025-08-07 13:11 ` Stefano Brivio
2025-08-13 2:21 ` David Gibson [this message]
2025-08-05 15:46 ` [PATCH v8 08/30] ndp: " Laurent Vivier
2025-08-05 15:46 ` [PATCH v8 09/30] icmp: " Laurent Vivier
2025-08-06 2:20 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 10/30] udp: " Laurent Vivier
2025-08-06 2:23 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 11/30] tcp: Convert tcp_tap_handler() to use iov_tail Laurent Vivier
2025-08-06 2:35 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 12/30] tcp: Convert tcp_data_from_tap() " Laurent Vivier
2025-08-06 2:37 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 13/30] dhcpv6: move offset initialization out of dhcpv6_opt() Laurent Vivier
2025-08-05 15:46 ` [PATCH v8 14/30] dhcpv6: Extract sending of NotOnLink status Laurent Vivier
2025-08-05 15:46 ` [PATCH v8 15/30] dhcpv6: Convert to iov_tail Laurent Vivier
2025-08-05 15:46 ` [PATCH v8 16/30] dhcpv6: Use iov_tail in dhcpv6_opt() Laurent Vivier
2025-08-06 4:14 ` David Gibson
2025-08-08 13:59 ` Laurent Vivier
2025-08-13 2:29 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 17/30] dhcp: Convert to iov_tail Laurent Vivier
2025-08-06 4:38 ` David Gibson
2025-08-08 9:33 ` Laurent Vivier
2025-08-13 2:27 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 18/30] ip: Use iov_tail in ipv6_l4hdr() Laurent Vivier
2025-08-06 5:12 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 19/30] tap: Convert tap4_handler() to iov_tail Laurent Vivier
2025-08-06 5:17 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 20/30] tap: Convert tap6_handler() " Laurent Vivier
2025-08-06 6:21 ` David Gibson
2025-08-08 13:57 ` Laurent Vivier
2025-08-13 3:22 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 21/30] packet: rename packet_data() to packet_get() Laurent Vivier
2025-08-06 6:22 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 22/30] arp: use iov_tail rather than pool Laurent Vivier
2025-08-06 6:24 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 23/30] dhcp: " Laurent Vivier
2025-08-06 6:26 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 24/30] dhcpv6: " Laurent Vivier
2025-08-06 6:27 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 25/30] icmp: " Laurent Vivier
2025-08-06 6:29 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 26/30] ndp: " Laurent Vivier
2025-08-06 6:31 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 27/30] packet: remove PACKET_POOL() and PACKET_POOL_P() Laurent Vivier
2025-08-06 6:32 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 28/30] packet: remove unused parameter from PACKET_POOL_DECL() Laurent Vivier
2025-08-06 6:33 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 29/30] packet: Refactor vhost-user memory region handling Laurent Vivier
2025-08-07 6:10 ` David Gibson
2025-08-07 9:05 ` Laurent Vivier
2025-08-07 11:44 ` David Gibson
2025-08-05 15:46 ` [PATCH v8 30/30] packet: Add support for multi-vector packets Laurent Vivier
2025-08-07 6:17 ` David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aJv2qBHRIN26wjVl@zatzit \
--to=david@gibson.dropbear.id.au \
--cc=lvivier@redhat.com \
--cc=passt-dev@passt.top \
--cc=sbrivio@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).