diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2017-06-26 03:33:37 -0400 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2017-06-26 09:33:37 +0200 |
commit | 2d2a815c90cffe928e3796aa69edc68c58b214ee (patch) | |
tree | cbdd9154a14492b2ac672503327e90ae027c0737 | |
parent | 593022fa377d40d9a645919759b04c53cf4eace8 (diff) | |
download | systemd-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.c | 6 |
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"); |