Eelco Chaudron <[email protected]> writes: > The probe functions try to install a flow without any actions. > For some reason, this only triggers an undefined behavior error after > the next patch in this series. > > Fixes: 02bb2824e51d ("dpif-netdev: do hw flow offload in a thread") > Acked-by: Eli Britstein <elibr.nvidia.com> > Signed-off-by: Eelco Chaudron <[email protected]> > ---
I'm not sure that this is solely due to the commit above, although after spending too much time swapping back and forth, I think it's true that there is a bug there. Rather, I think this gets exacerbated by: "[22/40] dpif-offload: Add operate implementation to dpif-offload." coupled with your testing with flow offloading. Especially, I think the error comes with an ENODEV resulted upcall, while having HW-offload enabled. This can occur in the testing when creating bridges and adding/deleting ports while IPv6 is enabled on the local system (because it will attempt neighbor discovery automatically, sending packets, etc). I'm surprised it was never observed before, but I guess we also never did any kind of ubsan testing with hardware offload. I guess the timing that the code in the patch introduces may be causing this. It's just a guess, but seems most likely. Given that you delete this code path completely in: "[36/40] dpif-offload-dpdk: Abstract rte_flow implementation from dpif-netdev." it's probably not a huge deal, but we should get this in to older branches "just-in-case" > 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 0084dd1ea..8c260fd42 100644 > --- a/lib/dpif-netdev.c > +++ b/lib/dpif-netdev.c > @@ -3090,7 +3090,7 @@ queue_netdev_flow_put(struct dp_netdev_pmd_thread *pmd, > flow_offload = &item->data->flow; > flow_offload->match = *match; > flow_offload->actions = xmalloc(actions_len); > - memcpy(flow_offload->actions, actions, actions_len); > + nullable_memcpy(flow_offload->actions, actions, actions_len); > flow_offload->actions_len = actions_len; > flow_offload->orig_in_port = flow->orig_in_port; _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
