mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-09-01 06:21:52 -06:00
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> Reviewed-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
aaa8a15c96
commit
7edf2f1d54
1 changed files with 7 additions and 4 deletions
|
@ -23,7 +23,10 @@
|
||||||
|
|
||||||
struct NetRxPkt {
|
struct NetRxPkt {
|
||||||
struct virtio_net_hdr virt_hdr;
|
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;
|
struct iovec *vec;
|
||||||
uint16_t vec_len_total;
|
uint16_t vec_len_total;
|
||||||
uint16_t vec_len;
|
uint16_t vec_len;
|
||||||
|
@ -89,7 +92,7 @@ net_rx_pkt_pull_data(struct NetRxPkt *pkt,
|
||||||
if (pkt->ehdr_buf_len) {
|
if (pkt->ehdr_buf_len) {
|
||||||
net_rx_pkt_iovec_realloc(pkt, iovcnt + 1);
|
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->vec[0].iov_len = pkt->ehdr_buf_len;
|
||||||
|
|
||||||
pkt->tot_len = pllen + 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);
|
assert(pkt);
|
||||||
|
|
||||||
if (strip_vlan) {
|
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);
|
&ploff, &tci);
|
||||||
} else {
|
} else {
|
||||||
pkt->ehdr_buf_len = 0;
|
pkt->ehdr_buf_len = 0;
|
||||||
|
@ -142,7 +145,7 @@ void net_rx_pkt_attach_iovec_ex(struct NetRxPkt *pkt,
|
||||||
|
|
||||||
if (strip_vlan) {
|
if (strip_vlan) {
|
||||||
pkt->ehdr_buf_len = eth_strip_vlan_ex(iov, iovcnt, iovoff, vet,
|
pkt->ehdr_buf_len = eth_strip_vlan_ex(iov, iovcnt, iovoff, vet,
|
||||||
pkt->ehdr_buf,
|
&pkt->ehdr_buf,
|
||||||
&ploff, &tci);
|
&ploff, &tci);
|
||||||
} else {
|
} else {
|
||||||
pkt->ehdr_buf_len = 0;
|
pkt->ehdr_buf_len = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue