From: Mark Kavanagh <[email protected]> dp_packets are created using xmalloc(); in the case of OvS-DPDK, it's possible the the resultant mbuf portion of the dp_packet contains random data. For some mbuf fields, specifically those related to multi-segment mbufs and/or offload features, random values may cause unexpected behaviour, should the dp_packet's contents be later copied to a DPDK mbuf. It is critical therefore, that these fields should be initialized to 0.
This patch ensures that the following mbuf fields are initialized to appropriate values on creation of a new dp_packet: - ol_flags=0 - nb_segs=1 - tx_offload=0 - packet_type=0 - next=NULL Adapted from an idea by Michael Qiu <[email protected]>: https://patchwork.ozlabs.org/patch/777570/ Co-authored-by: Tiago Lam <[email protected]> Signed-off-by: Mark Kavanagh <[email protected]> Signed-off-by: Tiago Lam <[email protected]> Acked-by: Eelco Chaudron <[email protected]> Acked-by: Flavio Leitner <[email protected]> --- lib/dp-packet.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/dp-packet.h b/lib/dp-packet.h index 5b4c9c7..fe34d04 100644 --- a/lib/dp-packet.h +++ b/lib/dp-packet.h @@ -498,14 +498,14 @@ dp_packet_mbuf_rss_flag_reset(struct dp_packet *p) p->mbuf.ol_flags &= ~PKT_RX_RSS_HASH; } -/* This initialization is needed for packets that do not come - * from DPDK interfaces, when vswitchd is built with --with-dpdk. - * The DPDK rte library will still otherwise manage the mbuf. - * We only need to initialize the mbuf ol_flags. */ +/* This initialization is needed for packets that do not come from DPDK + * interfaces, when vswitchd is built with --with-dpdk. */ static inline void dp_packet_mbuf_init(struct dp_packet *p) { - p->mbuf.ol_flags = 0; + p->mbuf.ol_flags = p->mbuf.tx_offload = p->mbuf.packet_type = 0; + p->mbuf.nb_segs = 1; + p->mbuf.next = NULL; } static inline bool -- 2.7.4 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
