vhost: fix deadlock on port deletion
[dpdk.git] / lib / librte_mbuf / rte_mbuf.c
index b0d292c..8fa7f49 100644 (file)
@@ -49,7 +49,7 @@ rte_pktmbuf_pool_init(struct rte_mempool *mp, void *opaque_arg)
        /* if no structure is provided, assume no mbuf private area */
        user_mbp_priv = opaque_arg;
        if (user_mbp_priv == NULL) {
-               default_mbp_priv.mbuf_priv_size = 0;
+               memset(&default_mbp_priv, 0, sizeof(default_mbp_priv));
                if (mp->elt_size > sizeof(struct rte_mbuf))
                        roomsz = mp->elt_size - sizeof(struct rte_mbuf);
                else
@@ -61,6 +61,7 @@ rte_pktmbuf_pool_init(struct rte_mempool *mp, void *opaque_arg)
        RTE_ASSERT(mp->elt_size >= sizeof(struct rte_mbuf) +
                user_mbp_priv->mbuf_data_room_size +
                user_mbp_priv->mbuf_priv_size);
+       RTE_ASSERT(user_mbp_priv->flags == 0);
 
        mbp_priv = rte_mempool_get_priv(mp);
        memcpy(mbp_priv, user_mbp_priv, sizeof(*mbp_priv));
@@ -126,6 +127,7 @@ rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n,
        }
        elt_size = sizeof(struct rte_mbuf) + (unsigned)priv_size +
                (unsigned)data_room_size;
+       memset(&mbp_priv, 0, sizeof(mbp_priv));
        mbp_priv.mbuf_data_room_size = data_room_size;
        mbp_priv.mbuf_priv_size = priv_size;
 
@@ -657,6 +659,7 @@ const char *rte_get_tx_ol_flag_name(uint64_t mask)
        case PKT_TX_OUTER_IPV4: return "PKT_TX_OUTER_IPV4";
        case PKT_TX_OUTER_IPV6: return "PKT_TX_OUTER_IPV6";
        case PKT_TX_TUNNEL_VXLAN: return "PKT_TX_TUNNEL_VXLAN";
+       case PKT_TX_TUNNEL_GTP: return "PKT_TX_TUNNEL_GTP";
        case PKT_TX_TUNNEL_GRE: return "PKT_TX_TUNNEL_GRE";
        case PKT_TX_TUNNEL_IPIP: return "PKT_TX_TUNNEL_IPIP";
        case PKT_TX_TUNNEL_GENEVE: return "PKT_TX_TUNNEL_GENEVE";
@@ -669,7 +672,6 @@ const char *rte_get_tx_ol_flag_name(uint64_t mask)
        case PKT_TX_SEC_OFFLOAD: return "PKT_TX_SEC_OFFLOAD";
        case PKT_TX_UDP_SEG: return "PKT_TX_UDP_SEG";
        case PKT_TX_OUTER_UDP_CKSUM: return "PKT_TX_OUTER_UDP_CKSUM";
-       case PKT_TX_METADATA: return "PKT_TX_METADATA";
        default: return NULL;
        }
 }
@@ -693,6 +695,7 @@ rte_get_tx_ol_flag_list(uint64_t mask, char *buf, size_t buflen)
                { PKT_TX_OUTER_IPV4, PKT_TX_OUTER_IPV4, NULL },
                { PKT_TX_OUTER_IPV6, PKT_TX_OUTER_IPV6, NULL },
                { PKT_TX_TUNNEL_VXLAN, PKT_TX_TUNNEL_MASK, NULL },
+               { PKT_TX_TUNNEL_GTP, PKT_TX_TUNNEL_MASK, NULL },
                { PKT_TX_TUNNEL_GRE, PKT_TX_TUNNEL_MASK, NULL },
                { PKT_TX_TUNNEL_IPIP, PKT_TX_TUNNEL_MASK, NULL },
                { PKT_TX_TUNNEL_GENEVE, PKT_TX_TUNNEL_MASK, NULL },
@@ -705,7 +708,6 @@ rte_get_tx_ol_flag_list(uint64_t mask, char *buf, size_t buflen)
                { PKT_TX_SEC_OFFLOAD, PKT_TX_SEC_OFFLOAD, NULL },
                { PKT_TX_UDP_SEG, PKT_TX_UDP_SEG, NULL },
                { PKT_TX_OUTER_UDP_CKSUM, PKT_TX_OUTER_UDP_CKSUM, NULL },
-               { PKT_TX_METADATA, PKT_TX_METADATA, NULL },
        };
        const char *name;
        unsigned int i;