summaryrefslogtreecommitdiff
path: root/udev/test-udev.c
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2009-10-31 11:53:41 +0100
committerKay Sievers <kay.sievers@vrfy.org>2009-10-31 11:53:41 +0100
commitbc3ec7bd45814a75845529fd0aca5c5a9d9f0c14 (patch)
treeaa2d20a8f74779e5a7f95bf2757fbd557883365e /udev/test-udev.c
parent88fbff03df6be4f0f71df11047d4a31daed357e4 (diff)
unblock signals we might want to handle
On Thu, Oct 29, 2009 at 19:15, Christian P. Schmidt <schmidt@digadd.de> wrote: > After the getty replaces itself with login the pam module pam_mount > calls mount. This in turn determines that the partition to be mounted is > LUKS encrypted, and calls cryptsetup. Cryptsetup receives the password, > unlocks the partition, and calls udevadm settle in order to avoid some > problems in interaction with LVM. > > udevadm settle never returns. > > The problem here is that SIGUSR1 and SIGALRM are both blocked in oldmask > already, and never reach udevadm. No care is ever taken to ensure those > signals are not blocked.
Diffstat (limited to 'udev/test-udev.c')
-rw-r--r--udev/test-udev.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/udev/test-udev.c b/udev/test-udev.c
index 0806fbf9ce..bd61aa0695 100644
--- a/udev/test-udev.c
+++ b/udev/test-udev.c
@@ -52,6 +52,7 @@ int main(int argc, char *argv[])
const char *action;
const char *subsystem;
struct sigaction act;
+ sigset_t mask;
int err = -EINVAL;
udev = udev_new();
@@ -68,6 +69,11 @@ int main(int argc, char *argv[])
sigaction(SIGALRM, &act, NULL);
sigaction(SIGINT, &act, NULL);
sigaction(SIGTERM, &act, NULL);
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGALRM);
+ sigaddset(&mask, SIGINT);
+ sigaddset(&mask, SIGTERM);
+ sigprocmask(SIG_UNBLOCK, &mask, NULL);
/* trigger timeout to prevent hanging processes */
alarm(UDEV_EVENT_TIMEOUT);