From: Zbigniew Jędrzejewski-Szmek Date: Mon, 26 Jun 2017 07:33:37 +0000 (-0400) Subject: core/loopback-setup: set a timeout for the kernel reply (#6187) X-Git-Tag: v234~97 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2d2a815c90cffe928e3796aa69edc68c58b214ee;p=platform%2Fupstream%2Fsystemd.git 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. --- 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");