From 785e22f876b5bf70c403ee019897e890d7f59bbc Mon Sep 17 00:00:00 2001 From: Zhiqi Chen Date: Sun, 13 Aug 2023 17:08:14 +0800 Subject: [PATCH] dpif-netdev: Fix length calculation of netdet_flow_key. The 'len' of a netdev_flow_key initialized by netdev_flow_key_init() is always zero, which may cause errors when cloning a netdev_flow_key by netdev_flow_key_clone(). Currently the 'len' member of a netdev_flow_key initialized by netdev_flow_key_init() is not used, so this error will not cause any bad behavior for now. Fixes: c82f496c3b69 ("dpif-netdev: Use unmasked key when adding datapath flows.") Acked-by: Eelco Chaudron Signed-off-by: Zhiqi Chen Signed-off-by: Ilya Maximets --- lib/dpif-netdev.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 9730e0eec..157694bcf 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -3380,14 +3380,13 @@ static inline void netdev_flow_key_init(struct netdev_flow_key *key, const struct flow *flow) { - uint64_t *dst = miniflow_values(&key->mf); uint32_t hash = 0; uint64_t value; miniflow_map_init(&key->mf, flow); miniflow_init(&key->mf, flow); - size_t n = dst - miniflow_get_values(&key->mf); + size_t n = miniflow_n_values(&key->mf); FLOW_FOR_EACH_IN_MAPS (value, flow, key->mf.map) { hash = hash_add64(hash, value);