[ovs-dev] [PATCH] netlink-socket: Exit NL transaction loop when EINVAL is returned

Sorin Vinturis svinturis at cloudbasesolutions.com
Tue Apr 14 19:58:25 UTC 2015


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 <svinturis at cloudbasesolutions.com>
Reported-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/57
---
 lib/netlink-socket.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c
index fab2a66..cdc80e5 100644
--- a/lib/netlink-socket.c
+++ b/lib/netlink-socket.c
@@ -909,6 +909,10 @@ nl_sock_transact_multiple(struct nl_sock *sock,
         } else if (error) {
             VLOG_ERR_RL(&rl, "transaction error (%s)", ovs_strerror(error));
             nl_sock_record_errors__(transactions, n, error);
+            if (error == EINVAL) {
+                /* driver request failed. */
+                break;
+            }
         }
     }
 }
-- 
1.9.0.msysgit.0



More information about the dev mailing list