Author: eelco
Date: Tue Mar 20 10:25:11 2012
New Revision: 33289
URL: https://nixos.org/websvn/nix/?rev=33289&sc=1
Log:
* Fix a race condition in mountall: the USR1 signal handler must be
installed before we daemonise, otherwise another job might send
USR1 to mountall before the handler is installed, killing it.
Added:
nixpkgs/trunk/pkgs/os-specific/linux/mountall/fix-usr1-race.patch
Modified:
nixpkgs/trunk/pkgs/os-specific/linux/mountall/default.nix
Modified: nixpkgs/trunk/pkgs/os-specific/linux/mountall/default.nix
==============================================================================
--- nixpkgs/trunk/pkgs/os-specific/linux/mountall/default.nix Tue Mar 20
10:17:08 2012 (r33288)
+++ nixpkgs/trunk/pkgs/os-specific/linux/mountall/default.nix Tue Mar 20
10:25:11 2012 (r33289)
@@ -8,7 +8,7 @@
sha256 = "1k52d4x75balnwcsqgznvzrdqgbp2dqnrzw0n25kajdcwr192wwy";
};
- patches = [ ./no-plymouth.patch ];
+ patches = [ ./no-plymouth.patch ./fix-usr1-race.patch ];
preConfigure = "rm -R aclocal.m4; gettextize -f; autoreconf -vfi";
Added: nixpkgs/trunk/pkgs/os-specific/linux/mountall/fix-usr1-race.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ nixpkgs/trunk/pkgs/os-specific/linux/mountall/fix-usr1-race.patch Tue Mar
20 10:25:11 2012 (r33289)
@@ -0,0 +1,27 @@
+diff -ru mountall-2.35-orig/src/mountall.c mountall-2.35/src/mountall.c
+--- mountall-2.35-orig/src/mountall.c 2012-03-20 11:01:14.035898815 +0100
++++ mountall-2.35/src/mountall.c 2012-03-20 11:20:39.194786311 +0100
+@@ -3746,6 +3746,12 @@
+ exit (EXIT_ERROR);
+ }
+
++ /* SIGUSR1 tells us that a network device came up. Install
++ the handler before daemonising so that the mountall-net job
++ won't kill us by sending USR1. */
++ nih_signal_set_handler (SIGUSR1, nih_signal_handler);
++ NIH_MUST (nih_signal_add_handler (NULL, SIGUSR1, usr1_handler, NULL));
++
+ /* Become daemon */
+ if (daemonise) {
+ pid_t pid;
+@@ -3799,10 +3805,6 @@
+ nih_signal_set_handler (SIGTERM, nih_signal_handler);
+ NIH_MUST (nih_signal_add_handler (NULL, SIGTERM, nih_main_term_signal,
NULL));
+
+- /* SIGUSR1 tells us that a network device came up */
+- nih_signal_set_handler (SIGUSR1, nih_signal_handler);
+- NIH_MUST (nih_signal_add_handler (NULL, SIGUSR1, usr1_handler, NULL));
+-
+ /* Check for force-fsck on the kernel command line */
+ cmdline = fopen ("/proc/cmdline", "r");
+ if (cmdline) {
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits