> -----Original Message----- > From: Akihiko Odaki <akihiko.od...@daynix.com> > Sent: Thursday, 20 April 2023 07:47 > Cc: Sriram Yagnaraman <sriram.yagnara...@est.tech>; Jason Wang > <jasow...@redhat.com>; Dmitry Fleytman <dmitry.fleyt...@gmail.com>; > Michael S . Tsirkin <m...@redhat.com>; Alex Bennée > <alex.ben...@linaro.org>; Philippe Mathieu-Daudé <phi...@linaro.org>; > Thomas Huth <th...@redhat.com>; Wainer dos Santos Moschetta > <waine...@redhat.com>; Beraldo Leal <bl...@redhat.com>; Cleber Rosa > <cr...@redhat.com>; Laurent Vivier <lviv...@redhat.com>; Paolo Bonzini > <pbonz...@redhat.com>; qemu-devel@nongnu.org; Tomasz Dzieciol > <t.dziec...@partner.samsung.com>; Akihiko Odaki > <akihiko.od...@daynix.com> > Subject: [PATCH v2 28/41] hw/net/net_rx_pkt: Enforce alignment for > eth_header > > eth_strip_vlan and eth_strip_vlan_ex refers to ehdr_buf as struct eth_header. > Enforce alignment for the structure. > > Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com> > --- > hw/net/net_rx_pkt.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/hw/net/net_rx_pkt.c b/hw/net/net_rx_pkt.c index > 6125a063d7..1de42b4f51 100644 > --- a/hw/net/net_rx_pkt.c > +++ b/hw/net/net_rx_pkt.c > @@ -23,7 +23,10 @@ > > struct NetRxPkt { > struct virtio_net_hdr virt_hdr; > - uint8_t ehdr_buf[sizeof(struct eth_header) + sizeof(struct vlan_header)]; > + struct { > + struct eth_header eth; > + struct vlan_header vlan; > + } ehdr_buf; > struct iovec *vec; > uint16_t vec_len_total; > uint16_t vec_len; > @@ -89,7 +92,7 @@ net_rx_pkt_pull_data(struct NetRxPkt *pkt, > if (pkt->ehdr_buf_len) { > net_rx_pkt_iovec_realloc(pkt, iovcnt + 1); > > - pkt->vec[0].iov_base = pkt->ehdr_buf; > + pkt->vec[0].iov_base = &pkt->ehdr_buf; > pkt->vec[0].iov_len = pkt->ehdr_buf_len; > > pkt->tot_len = pllen + pkt->ehdr_buf_len; @@ -120,7 +123,7 @@ void > net_rx_pkt_attach_iovec(struct NetRxPkt *pkt, > assert(pkt); > > if (strip_vlan) { > - pkt->ehdr_buf_len = eth_strip_vlan(iov, iovcnt, iovoff, > pkt->ehdr_buf, > + pkt->ehdr_buf_len = eth_strip_vlan(iov, iovcnt, iovoff, > + &pkt->ehdr_buf, > &ploff, &tci); > } else { > pkt->ehdr_buf_len = 0; > @@ -142,7 +145,7 @@ void net_rx_pkt_attach_iovec_ex(struct NetRxPkt > *pkt, > > if (strip_vlan) { > pkt->ehdr_buf_len = eth_strip_vlan_ex(iov, iovcnt, iovoff, vet, > - pkt->ehdr_buf, > + &pkt->ehdr_buf, > &ploff, &tci); > } else { > pkt->ehdr_buf_len = 0; > -- > 2.40.0
LGTM