The tail of the struct dp_netdev_flow contains a whole netdev_flow_key struct.
We need to first minus the size of netdev_flow_key then add back the real size of this netdev_flow_key. Signed-off-by: Peng He <xnhp0...@gmail.com> --- lib/dpif-netdev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 2c08a71c8..a8779a979 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -4072,7 +4072,8 @@ dp_netdev_flow_add(struct dp_netdev_pmd_thread *pmd, && !FLOWMAP_HAS_FIELD(&mask.mf.map, regs)); /* Do not allocate extra space. */ - flow = xmalloc(sizeof *flow - sizeof flow->cr.flow.mf + mask.len); + flow = xmalloc(sizeof *flow - sizeof(flow->cr.flow) + + offsetof(struct netdev_flow_key, mf) + mask.len); memset(&flow->stats, 0, sizeof flow->stats); atomic_init(&flow->netdev_flow_get_result, 0); memset(&flow->last_stats, 0, sizeof flow->last_stats); @@ -9744,7 +9745,8 @@ dpcls_create_subtable(struct dpcls *cls, const struct netdev_flow_key *mask) /* Need to add one. */ subtable = xmalloc(sizeof *subtable - - sizeof subtable->mask.mf + mask->len); + - sizeof subtable->mask + + offsetof(struct netdev_flow_key, mf) + mask->len); cmap_init(&subtable->rules); subtable->hit_cnt = 0; netdev_flow_key_clone(&subtable->mask, mask); -- 2.25.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev