From 2d2a815c90cffe928e3796aa69edc68c58b214ee Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 26 Jun 2017 03:33:37 -0400 Subject: [PATCH] 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. --- src/core/loopback-setup.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/loopback-setup.c b/src/core/loopback-setup.c index 82addfd..a7b801c 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"); -- 2.7.4