summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-06-26 03:33:37 -0400
committerLennart Poettering <lennart@poettering.net>2017-06-26 09:33:37 +0200
commit2d2a815c90cffe928e3796aa69edc68c58b214ee (patch)
treecbdd9154a14492b2ac672503327e90ae027c0737
parent593022fa377d40d9a645919759b04c53cf4eace8 (diff)
downloadsystemd-2d2a815c90cffe928e3796aa69edc68c58b214ee.tar.gz
core/loopback-setup: set a timeout for the kernel reply (#6187)
This shouldn't happen, but just in case for any reason the kernel doesn't answer, it's probably much better to continue. Follow-up for fb8939274a93d713575a409e9baab55a5638863a.
-rw-r--r--src/core/loopback-setup.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/core/loopback-setup.c b/src/core/loopback-setup.c
index 82addfdde6..a7b801c47d 100644
--- a/src/core/loopback-setup.c
+++ b/src/core/loopback-setup.c
@@ -26,6 +26,8 @@
#include "missing.h"
#include "netlink-util.h"
+#define LOOPBACK_SETUP_TIMEOUT_USEC (5 * USEC_PER_SEC)
+
struct state {
unsigned n_messages;
int rcode;
@@ -61,7 +63,7 @@ static int start_loopback(sd_netlink *rtnl, struct state *s) {
if (r < 0)
return r;
- r = sd_netlink_call_async(rtnl, req, start_loopback_handler, s, USEC_INFINITY, NULL);
+ r = sd_netlink_call_async(rtnl, req, start_loopback_handler, s, LOOPBACK_SETUP_TIMEOUT_USEC, NULL);
if (r < 0)
return r;
@@ -201,7 +203,7 @@ int loopback_setup(void) {
return log_error_errno(r, "Failed to enqueue loopback interface start request: %m");
while (state.n_messages > 0) {
- r = sd_netlink_wait(rtnl, USEC_INFINITY);
+ r = sd_netlink_wait(rtnl, LOOPBACK_SETUP_TIMEOUT_USEC);
if (r < 0)
return log_error_errno(r, "Failed to wait for netlink event: %m");