diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2009-10-31 11:53:41 +0100 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2009-10-31 11:53:41 +0100 |
commit | bc3ec7bd45814a75845529fd0aca5c5a9d9f0c14 (patch) | |
tree | aa2d20a8f74779e5a7f95bf2757fbd557883365e /udev/test-udev.c | |
parent | 88fbff03df6be4f0f71df11047d4a31daed357e4 (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.c | 6 |
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); |