{
struct kdbus_queue_entry *entry;
struct kdbus_item *sigmask_item;
- sigset_t sigsaved;
- sigset_t sigmask;
+ sigset_t ksigsaved;
+ sigset_t ksigmask;
int r, ret;
if (WARN_ON(!reply_wait))
if (IS_ERR(sigmask_item)) {
sigmask_item = NULL;
} else {
- memcpy(&sigmask, &sigmask_item->sigmask, sizeof(sigmask));
- sigprocmask(SIG_SETMASK, &sigmask, &sigsaved);
+ memcpy(&ksigmask, &sigmask_item->sigmask, sizeof(ksigmask));
+ sigdelsetmask(&ksigmask, sigmask(SIGKILL)|sigmask(SIGSTOP));
+ sigprocmask(SIG_SETMASK, &ksigmask, &ksigsaved);
}
r = wait_event_interruptible_timeout(reply_wait->reply_dst->wait,
if (sigmask_item) {
memcpy(¤t->saved_sigmask,
- &sigsaved, sizeof(sigsaved));
+ &ksigsaved, sizeof(ksigsaved));
set_restore_sigmask();
}
}
if (sigmask_item)
- sigprocmask(SIG_SETMASK, &sigsaved, NULL);
+ sigprocmask(SIG_SETMASK, &ksigsaved, NULL);
if (r == 0)
ret = -ETIMEDOUT;