2013-12-06 09:32:04 +01:00
|
|
|
From 78ea81aaef57b5b40fdc86335a7e6a432a72ad48 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Hannes Reinecke <hare@suse.de>
|
|
|
|
Date: Tue, 19 Nov 2013 20:26:12 +0000
|
2014-03-19 10:20:41 +01:00
|
|
|
Subject: fipvlan: break out of receive loop on error
|
2013-12-06 09:32:04 +01:00
|
|
|
|
|
|
|
When fip_recv() returns an error we need to break out of the
|
|
|
|
receive loop; otherwise we might be stuck in there forever.
|
|
|
|
|
|
|
|
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
|
|
|
Signed-off-by: Robert Love <robert.w.love@intel.com>
|
|
|
|
---
|
|
|
|
fipvlan.c | 8 ++++++--
|
|
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/fipvlan.c b/fipvlan.c
|
|
|
|
index 3c91930..198f0ee 100644
|
|
|
|
--- a/fipvlan.c
|
|
|
|
+++ b/fipvlan.c
|
|
|
|
@@ -772,8 +772,12 @@ static void recv_loop(int timeout)
|
|
|
|
rtnl_recv(pfd[0].fd, rtnl_listener_handler, NULL);
|
|
|
|
/* everything else should be FIP packet sockets */
|
|
|
|
for (i = 1; i < pfd_len; i++) {
|
|
|
|
- if (pfd[i].revents & POLLIN)
|
|
|
|
- fip_recv(pfd[i].fd, fip_vlan_handler, NULL);
|
|
|
|
+ if (pfd[i].revents & POLLIN) {
|
|
|
|
+ rc = fip_recv(pfd[i].fd, fip_vlan_handler,
|
|
|
|
+ NULL);
|
|
|
|
+ if (rc < 0)
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--
|
|
|
|
1.8.1.4
|
|
|
|
|