diff --git a/pkgs/os-specific/linux/udev/173.nix b/pkgs/os-specific/linux/udev/173.nix index ba96717e494a..f5076a9ed15f 100644 --- a/pkgs/os-specific/linux/udev/173.nix +++ b/pkgs/os-specific/linux/udev/173.nix @@ -44,7 +44,8 @@ stdenv.mkDerivation rec { rm -frv $out/share/gtk-doc ''; - patches = [ ./custom-rules.patch ]; + patches = [ ./custom-rules.patch ] ++ + stdenv.lib.optional (stdenv.system == "armv5tel-linux") ./pre-accept4-kernel.patch; meta = { homepage = http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html; diff --git a/pkgs/os-specific/linux/udev/pre-accept4-kernel.patch b/pkgs/os-specific/linux/udev/pre-accept4-kernel.patch new file mode 100644 index 000000000000..2cf549d99a76 --- /dev/null +++ b/pkgs/os-specific/linux/udev/pre-accept4-kernel.patch @@ -0,0 +1,43 @@ +From: +https://github.com/archlinuxarm/PKGBUILDs/blob/master/core/udev-oxnas/pre-accept4-kernel.patch + +diff -urN a/udev/udev-ctrl.c b/udev/udev-ctrl.c +--- a/udev/udev-ctrl.c 2011-10-09 17:10:32.000000000 -0600 ++++ b/udev/udev-ctrl.c 2011-10-25 15:11:09.000000000 -0600 +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -182,6 +183,7 @@ + struct ucred ucred; + socklen_t slen; + const int on = 1; ++ int flgs; + + conn = calloc(1, sizeof(struct udev_ctrl_connection)); + if (conn == NULL) +@@ -189,13 +191,19 @@ + conn->refcount = 1; + conn->uctrl = uctrl; + +- conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK); ++// conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK); ++ conn->sock = accept(uctrl->sock, NULL, NULL); + if (conn->sock < 0) { + if (errno != EINTR) + err(uctrl->udev, "unable to receive ctrl connection: %m\n"); + goto err; + } + ++// Since we don't have accept4 ++ flgs = fcntl(conn->sock, F_GETFL, NULL); ++ if(flgs >= 0) fcntl(conn->sock, F_SETFL, flgs | O_NONBLOCK); ++ fcntl(conn->sock, F_SETFD, FD_CLOEXEC); ++ + /* check peer credential of connection */ + slen = sizeof(ucred); + if (getsockopt(conn->sock, SOL_SOCKET, SO_PEERCRED, &ucred, &slen) < 0) {