[ovs-dev] [PATCH] ofproto: Fix crash on PACKET_OUT due to recursive locking after upcall.

Ben Pfaff blp at ovn.org
Mon Nov 25 21:45:35 UTC 2019


On Fri, Nov 01, 2019 at 10:24:39PM +0100, Ilya Maximets wrote:
> Handling of OpenFlow PACKET_OUT implies pushing the packet through
> the datapath and packet processing inside the datapath could trigger
> an upcall.  In case of system datapath, 'dpif_execute()' sends packet
> to the kernel module and returns.  If any, upcall  will be triggered
> inside the kernel and handled by a separate thread in userspace.
> But in case of userspace datapath full processing of the packet happens
> inside the 'dpif_execute()' in the same thread that handled PACKET_OUT.
> This causes an issue if upcall will lead to modification of flow rules.

Thank you very much for the fix.  It is simpler and cleaner than I
expected.  It looks correct to me and it passes all of the tests for me
locally.

Acked-by: Ben Pfaff <blp at ovn.org>


More information about the dev mailing list