On 25.11.2019 22:45, Ben Pfaff wrote:
> 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 <[email protected]>

Thanks!  Applied to master and backported down to 2.7.

There was a big refactoring between branches 2.6 and 2.7, so this
patch could not be applied to 2.6.  However, IIUC, handle_packet_out()
on this branch doesn't take 'ofproto_mutex' at all.  Looks a bit dangerous.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to