> -----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

Reply via email to