Fix crash when vlib_buffer_copy() fails - also sent upstream in https://gerrit.fd.io/r/c/vpp/+/33606

This commit is contained in:
Pim van Pelt
2021-08-26 16:43:13 +02:00
parent 45f4088656
commit a474d09a9e

View File

@ -675,10 +675,14 @@ VLIB_NODE_FN (lcp_arp_phy_node)
c0 = vlib_buffer_copy (vm, b0); c0 = vlib_buffer_copy (vm, b0);
vlib_buffer_advance (b0, len0); vlib_buffer_advance (b0, len0);
/* Send to the host */ if (c0)
vnet_buffer (c0)->sw_if_index[VLIB_TX] = {
lip0->lip_host_sw_if_index; /* Send to the host */
reply_copies[n_copies++] = vlib_get_buffer_index (vm, c0); vnet_buffer (c0)->sw_if_index[VLIB_TX] =
lip0->lip_host_sw_if_index;
reply_copies[n_copies++] =
vlib_get_buffer_index (vm, c0);
}
} }
} }
if (arp1->opcode == clib_host_to_net_u16 (ETHERNET_ARP_OPCODE_reply)) if (arp1->opcode == clib_host_to_net_u16 (ETHERNET_ARP_OPCODE_reply))
@ -703,10 +707,14 @@ VLIB_NODE_FN (lcp_arp_phy_node)
c1 = vlib_buffer_copy (vm, b1); c1 = vlib_buffer_copy (vm, b1);
vlib_buffer_advance (b1, len1); vlib_buffer_advance (b1, len1);
/* Send to the host */ if (c1)
vnet_buffer (c1)->sw_if_index[VLIB_TX] = {
lip1->lip_host_sw_if_index; /* Send to the host */
reply_copies[n_copies++] = vlib_get_buffer_index (vm, c1); vnet_buffer (c1)->sw_if_index[VLIB_TX] =
lip1->lip_host_sw_if_index;
reply_copies[n_copies++] =
vlib_get_buffer_index (vm, c1);
}
} }
} }
@ -775,10 +783,14 @@ VLIB_NODE_FN (lcp_arp_phy_node)
c0 = vlib_buffer_copy (vm, b0); c0 = vlib_buffer_copy (vm, b0);
vlib_buffer_advance (b0, len0); vlib_buffer_advance (b0, len0);
/* Send to the host */ if (c0)
vnet_buffer (c0)->sw_if_index[VLIB_TX] = {
lip0->lip_host_sw_if_index; /* Send to the host */
reply_copies[n_copies++] = vlib_get_buffer_index (vm, c0); vnet_buffer (c0)->sw_if_index[VLIB_TX] =
lip0->lip_host_sw_if_index;
reply_copies[n_copies++] =
vlib_get_buffer_index (vm, c0);
}
} }
} }