qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [PATCH v2 28/41] hw/net/net_rx_pkt: Enforce alignment for eth_header


From: Sriram Yagnaraman
Subject: RE: [PATCH v2 28/41] hw/net/net_rx_pkt: Enforce alignment for eth_header
Date: Thu, 20 Apr 2023 16:22:28 +0000


> -----Original Message-----
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
> Sent: Thursday, 20 April 2023 07:47
> Cc: Sriram Yagnaraman <sriram.yagnaraman@est.tech>; Jason Wang
> <jasowang@redhat.com>; Dmitry Fleytman <dmitry.fleytman@gmail.com>;
> Michael S . Tsirkin <mst@redhat.com>; Alex Bennée
> <alex.bennee@linaro.org>; Philippe Mathieu-Daudé <philmd@linaro.org>;
> Thomas Huth <thuth@redhat.com>; Wainer dos Santos Moschetta
> <wainersm@redhat.com>; Beraldo Leal <bleal@redhat.com>; Cleber Rosa
> <crosa@redhat.com>; Laurent Vivier <lvivier@redhat.com>; Paolo Bonzini
> <pbonzini@redhat.com>; qemu-devel@nongnu.org; Tomasz Dzieciol
> <t.dzieciol@partner.samsung.com>; Akihiko Odaki
> <akihiko.odaki@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.odaki@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

[Prev in Thread] Current Thread [Next in Thread]