[ovs-dev] [PATCH] dpif-netdev: Fix zero length keys insertion to EMC.

Ilya Maximets i.maximets at samsung.com
Wed Jul 25 16:09:31 UTC 2018

'key.len' should be calculated before inserting to EMC, otherwise
resulting entry will match with any packet with the same hash.

CC: Yipeng Wang <yipeng1.wang at intel.com>
Fixes: 60d8ccae135f ("dpif-netdev: Add SMC cache after EMC cache")
Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
 lib/dpif-netdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 13a20f0..0a833dc 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -5810,9 +5810,9 @@ smc_lookup_batch(struct dp_netdev_pmd_thread *pmd,
                 if (OVS_LIKELY(dpcls_rule_matches_key(&flow->cr, &keys[i]) &&
                 flow->flow.in_port.odp_port == packet->md.in_port.odp_port)) {
                     /* SMC hit and emc miss, we insert into EMC */
-                    emc_probabilistic_insert(pmd, &keys[i], flow);
                     keys[i].len =
+                    emc_probabilistic_insert(pmd, &keys[i], flow);
                     dp_netdev_queue_batches(packet, flow,
                     miniflow_get_tcp_flags(&keys[i].mf), batches, n_batches);

More information about the dev mailing list