diff options
Diffstat (limited to 'meta/recipes-extended/iputils')
-rw-r--r-- | meta/recipes-extended/iputils/files/arping-fix-arping-hang-if-SIGALRM-is-blocked.patch | 44 | ||||
-rw-r--r-- | meta/recipes-extended/iputils/iputils_s20151218.bb | 1 |
2 files changed, 45 insertions, 0 deletions
diff --git a/meta/recipes-extended/iputils/files/arping-fix-arping-hang-if-SIGALRM-is-blocked.patch b/meta/recipes-extended/iputils/files/arping-fix-arping-hang-if-SIGALRM-is-blocked.patch new file mode 100644 index 0000000000..7b56276b39 --- /dev/null +++ b/meta/recipes-extended/iputils/files/arping-fix-arping-hang-if-SIGALRM-is-blocked.patch @@ -0,0 +1,44 @@ +arping: fix arping hang if SIGALRM is blocked + +Unblock SIGALRM so that the previously called alarm() can prevent +recvfrom() from blocking forever in case the inherited procmask is +blocking SIGALRM and no packet is received. + +Upstream-Status: Backport + +Reported-by: Rui Prior <rprior@dcc.fc.up.pt> +RH-Bugzilla: #1085971 +Signed-off-by: Jan Synacek <jsynacek@redhat.com> +Signed-off-by: Zhenbo Gao <zhenbo.gao@windriver.com> + +diff --git a/arping.c.orig b/arping.c +index 35408c1..2098159 100644 +--- a/arping.c.orig ++++ b/arping.c +@@ -1215,16 +1215,22 @@ main(int argc, char **argv) + socklen_t alen = sizeof(from); + int cc; + ++ sigemptyset(&sset); ++ sigaddset(&sset, SIGALRM); ++ sigaddset(&sset, SIGINT); ++ /* Unblock SIGALRM so that the previously called alarm() ++ * can prevent recvfrom from blocking forever in case the ++ * inherited procmask is blocking SIGALRM and no packet ++ * is received. */ ++ sigprocmask(SIG_UNBLOCK, &sset, &osset); ++ + if ((cc = recvfrom(s, packet, sizeof(packet), 0, + (struct sockaddr *)&from, &alen)) < 0) { + perror("arping: recvfrom"); + continue; + } + +- sigemptyset(&sset); +- sigaddset(&sset, SIGALRM); +- sigaddset(&sset, SIGINT); +- sigprocmask(SIG_BLOCK, &sset, &osset); ++ sigprocmask(SIG_BLOCK, &sset, NULL); + recv_pack(packet, cc, (struct sockaddr_ll *)&from); + sigprocmask(SIG_SETMASK, &osset, NULL); + } diff --git a/meta/recipes-extended/iputils/iputils_s20151218.bb b/meta/recipes-extended/iputils/iputils_s20151218.bb index 0d4dd1b17c..46de6fc444 100644 --- a/meta/recipes-extended/iputils/iputils_s20151218.bb +++ b/meta/recipes-extended/iputils/iputils_s20151218.bb @@ -20,6 +20,7 @@ SRC_URI = "http://www.skbuff.net/iputils/${BPN}-${PV}.tar.bz2 \ file://nsgmls-path-fix.patch \ file://0001-Fix-header-inclusion-for-musl.patch \ file://0001-Intialize-struct-elements-by-name.patch \ + file://arping-fix-arping-hang-if-SIGALRM-is-blocked.patch \ " SRC_URI[md5sum] = "8aaa7395f27dff9f57ae016d4bc753ce" |