Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
revalidator: Avoid assert in transition_ukey().
There is a case where a flow is dumped from the kernel after the ukey is already transitioned into an EVICTING/EVICTED/DELETED state, and the revalidator thread attempts to shift that into UKEY_OPERATIONAL because it was able to dump the flow from the datapath. This resulted in triggering the assert in transition_ukey(). Detect this condition and skip handling the flow (as it's already on its way out). Users report: > Program terminated with signal SIGABRT, Aborted. > raise () from /lib/x86_64-linux-gnu/libc.so.6 > raise () from /lib/x86_64-linux-gnu/libc.so.6 > abort () from /lib/x86_64-linux-gnu/libc.so.6 > ovs_abort_valist > vlog_abort_valist > vlog_abort > ovs_assert_failure > transition_ukey (ukey=<optimized out>, dst=<optimized out>) > at ofproto/ofproto-dpif-upcall.c:1674 > revalidate (revalidator=0x1cb36c8) at ofproto/ofproto-dpif-upcall.c:2324 > udpif_revalidator (arg=0x1cb36c8) at ofproto/ofproto-dpif-upcall.c:901 > ovsthread_wrapper (aux_=<optimized out>) at lib/ovs-thread.c:348 > start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 > clone () from /lib/x86_64-linux-gnu/libc.so.6 VMware-BZ: #1857694 Signed-off-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
- Loading branch information