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 > Reviewed-by: David Gibson 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. > + eh = IOV_REMOVE_HEADER(&data, eh_storage); > + ah = IOV_REMOVE_HEADER(&data, ah_storage); > + am = IOV_REMOVE_HEADER(&data, am_storage); > if (!eh || !ah || !am) > return -1; > > diff --git a/packet.c b/packet.c > index 82adc9fd1a39..34b1722b9a03 100644 > --- a/packet.c > +++ b/packet.c > @@ -201,7 +201,6 @@ void *packet_get_do(const struct pool *p, const size_t idx, > * Return: false if packet index is invalid, true otherwise. > * If something wrong with @data, don't return at all (assert). > */ > -/* cppcheck-suppress unusedFunction */ > bool packet_data_do(const struct pool *p, size_t idx, > struct iov_tail *data, > const char *func, int line) -- 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