On Tue, Apr 14, 2015 at 08:25:59PM +0000, Sorin Vinturis wrote:
> The nl_sock_transact_multiple function enters in an infinite loop,
> when invalid error, EINVAL, is returned by nl_sock_transact_multiple__.
> EINVAL is the error returned by the latter function when a driver
> request fails.
> 
> Signed-off-by: Sorin Vinturis <svintu...@cloudbasesolutions.com>
> Reported-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com>
> Reported-at: https://github.com/openvswitch/ovs-issues/issues/57

I see that this fixes a bug, even on Linux.  Thank you.  It's actually
a pretty serious bug (given the infinite loop), but I guess that it
must not occur in any normal circumstances, otherwise we would have
heard about it over the years.

However, I want to make sure of something before I commit it.
nl_sock_transact_multiple__() should only return an error in the case
of a "transport" error, that is, of some problem communicating with
the datapath (e.g. the kernel module has been removed or something
similarly fatal).  It should not return an error in cases where some
message asks the datapath to do something erroneous (e.g. to add a
flow that the datapath doesn't understand, to delete a vport that
doesn't exist, ...).  This is because only in the former case should
all of the transactions be aborted; in the latter case, any remaining
transactions should still be processed.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to