summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--udev/test-udev.c6
-rw-r--r--udev/udevadm-monitor.c5
-rw-r--r--udev/udevadm-settle.c7
3 files changed, 17 insertions, 1 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);
diff --git a/udev/udevadm-monitor.c b/udev/udevadm-monitor.c
index 90388db58e..00b130dafe 100644
--- a/udev/udevadm-monitor.c
+++ b/udev/udevadm-monitor.c
@@ -67,6 +67,7 @@ static void print_device(struct udev_device *device, const char *source, int pro
int udevadm_monitor(struct udev *udev, int argc, char *argv[])
{
struct sigaction act;
+ sigset_t mask;
int option;
int prop = 0;
int print_kernel = 0;
@@ -142,6 +143,10 @@ int udevadm_monitor(struct udev *udev, int argc, char *argv[])
act.sa_flags = SA_RESTART;
sigaction(SIGINT, &act, NULL);
sigaction(SIGTERM, &act, NULL);
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGINT);
+ sigaddset(&mask, SIGTERM);
+ sigprocmask(SIG_UNBLOCK, &mask, NULL);
printf("monitor will print the received events for:\n");
if (print_udev) {
diff --git a/udev/udevadm-settle.c b/udev/udevadm-settle.c
index 5030f18602..4f422f9092 100644
--- a/udev/udevadm-settle.c
+++ b/udev/udevadm-settle.c
@@ -66,6 +66,7 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
const char *exists = NULL;
int timeout = DEFAULT_TIMEOUT;
struct sigaction act;
+ sigset_t mask;
struct udev_queue *udev_queue = NULL;
int rc = 1;
@@ -78,6 +79,10 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
act.sa_flags = 0;
sigaction(SIGALRM, &act, NULL);
sigaction(SIGUSR1, &act, NULL);
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGUSR1);
+ sigaddset(&mask, SIGALRM);
+ sigprocmask(SIG_UNBLOCK, &mask, NULL);
while (1) {
int option;
@@ -163,7 +168,7 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
uctrl = udev_ctrl_new_from_socket(udev, UDEV_CTRL_SOCK_PATH);
if (uctrl != NULL) {
- sigset_t mask, oldmask;
+ sigset_t oldmask;
sigemptyset(&mask);
sigaddset(&mask, SIGUSR1);