[gnome-continuous-yocto/gnomeostree-3.28-rocko: 7630/8267] iputils: backport patch to fix arping hang problem



commit 5764589c3d668388e8fe5f3ca4e55487f1db35cd
Author: Chen Qi <Qi Chen windriver com>
Date:   Thu Sep 7 10:37:10 2017 +0800

    iputils: backport patch to fix arping hang problem
    
    arping hangs if SIGALARM is blocked. Backport a patch to fix this problem.
    
    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.
    
    (From OE-Core rev: 818d4a97763c69e9289fb99822535cd3ca7af6a2)
    
    Signed-off-by: Chen Qi <Qi Chen windriver com>
    Signed-off-by: Ross Burton <ross burton intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 ...ing-fix-arping-hang-if-SIGALRM-is-blocked.patch |   44 ++++++++++++++++++++
 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 0000000..7b56276
--- /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 0d4dd1b..46de6fc 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"


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]