* [PATCH 0/2] Was: ssetmask/sgetmask syscalls [not found] ` <1757046472.8555813.1357378462241.JavaMail.root@redhat.com> @ 2013-01-05 18:12 ` Oleg Nesterov 2013-01-05 18:13 ` [PATCH 1/2] signals: sys_ssetmask() uses uninitialized newmask Oleg Nesterov 2013-01-05 18:13 ` [PATCH 2/2] signals: set_current_blocked() can use __set_current_blocked() Oleg Nesterov 0 siblings, 2 replies; 4+ messages in thread From: Oleg Nesterov @ 2013-01-05 18:12 UTC (permalink / raw) To: CAI Qian, Andrew Morton, Linus Torvalds Cc: Linda Wang, Matt Zywusko, Al Viro, linux-kernel On 01/05, CAI Qian wrote: > > FYI, I noticed that ssetmask/sgetmask syscalls starting to > fail > > ssetmask01 1 TFAIL : sgetmask() failed: TEST_ERRNO=???(0): Success Thanks! Should be fixed by 1/2. Probably trivial enough for 3.8 2/2 is a minor "while at it" cleanup. Oleg. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] signals: sys_ssetmask() uses uninitialized newmask 2013-01-05 18:12 ` [PATCH 0/2] Was: ssetmask/sgetmask syscalls Oleg Nesterov @ 2013-01-05 18:13 ` Oleg Nesterov 2013-01-06 3:28 ` CAI Qian 2013-01-05 18:13 ` [PATCH 2/2] signals: set_current_blocked() can use __set_current_blocked() Oleg Nesterov 1 sibling, 1 reply; 4+ messages in thread From: Oleg Nesterov @ 2013-01-05 18:13 UTC (permalink / raw) To: CAI Qian, Andrew Morton, Linus Torvalds Cc: Linda Wang, Matt Zywusko, Al Viro, linux-kernel 77097ae5 "most of set_current_blocked() callers want SIGKILL/SIGSTOP removed from set" removed the initialization of newmask by accident, restore. Reported-by: CAI Qian <caiqian@redhat.com> Signed-off-by: Oleg Nesterov <oleg@redhat.com> Cc: stable@kernel.org # v3.5+ --- kernel/signal.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/kernel/signal.c b/kernel/signal.c index 7aaa51d..9692499 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -3286,6 +3286,7 @@ SYSCALL_DEFINE1(ssetmask, int, newmask) int old = current->blocked.sig[0]; sigset_t newset; + siginitset(&newset, newmask); set_current_blocked(&newset); return old; -- 1.5.5.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] signals: sys_ssetmask() uses uninitialized newmask 2013-01-05 18:13 ` [PATCH 1/2] signals: sys_ssetmask() uses uninitialized newmask Oleg Nesterov @ 2013-01-06 3:28 ` CAI Qian 0 siblings, 0 replies; 4+ messages in thread From: CAI Qian @ 2013-01-06 3:28 UTC (permalink / raw) To: Oleg Nesterov Cc: Linda Wang, Matt Zywusko, Al Viro, linux-kernel, Andrew Morton, Linus Torvalds ----- Original Message ----- > From: "Oleg Nesterov" <oleg@redhat.com> > To: "CAI Qian" <caiqian@redhat.com>, "Andrew Morton" <akpm@linux-foundation.org>, "Linus Torvalds" > <torvalds@linux-foundation.org> > Cc: "Linda Wang" <lwang@redhat.com>, "Matt Zywusko" <mzywusko@redhat.com>, "Al Viro" <viro@zeniv.linux.org.uk>, > linux-kernel@vger.kernel.org > Sent: Sunday, January 6, 2013 2:13:13 AM > Subject: [PATCH 1/2] signals: sys_ssetmask() uses uninitialized newmask > > 77097ae5 "most of set_current_blocked() callers want SIGKILL/SIGSTOP > removed from set" removed the initialization of newmask by accident, > restore. > > Reported-by: CAI Qian <caiqian@redhat.com> > Signed-off-by: Oleg Nesterov <oleg@redhat.com> > Cc: stable@kernel.org # v3.5+ Thanks Oleg. This is now passing the testing. Tested-by: CAI Qian <caiqian@redhat.com> > --- > kernel/signal.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/kernel/signal.c b/kernel/signal.c > index 7aaa51d..9692499 100644 > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -3286,6 +3286,7 @@ SYSCALL_DEFINE1(ssetmask, int, newmask) > int old = current->blocked.sig[0]; > sigset_t newset; > > + siginitset(&newset, newmask); > set_current_blocked(&newset); > > return old; > -- > 1.5.5.1 > > > ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] signals: set_current_blocked() can use __set_current_blocked() 2013-01-05 18:12 ` [PATCH 0/2] Was: ssetmask/sgetmask syscalls Oleg Nesterov 2013-01-05 18:13 ` [PATCH 1/2] signals: sys_ssetmask() uses uninitialized newmask Oleg Nesterov @ 2013-01-05 18:13 ` Oleg Nesterov 1 sibling, 0 replies; 4+ messages in thread From: Oleg Nesterov @ 2013-01-05 18:13 UTC (permalink / raw) To: CAI Qian, Andrew Morton, Linus Torvalds Cc: Linda Wang, Matt Zywusko, Al Viro, linux-kernel Cleanup. And I think we need more cleanups, in particular __set_current_blocked() and sigprocmask() should die. Nobody should ever block SIGKILL or SIGSTOP. - Change set_current_blocked() to use __set_current_blocked() - Change sys_sigprocmask() to use set_current_blocked(), this way it should not worry about SIGKILL/SIGSTOP. Signed-off-by: Oleg Nesterov <oleg@redhat.com> --- kernel/signal.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) diff --git a/kernel/signal.c b/kernel/signal.c index 9692499..372771e 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2528,11 +2528,8 @@ static void __set_task_blocked(struct task_struct *tsk, const sigset_t *newset) */ void set_current_blocked(sigset_t *newset) { - struct task_struct *tsk = current; sigdelsetmask(newset, sigmask(SIGKILL) | sigmask(SIGSTOP)); - spin_lock_irq(&tsk->sighand->siglock); - __set_task_blocked(tsk, newset); - spin_unlock_irq(&tsk->sighand->siglock); + __set_current_blocked(newset); } void __set_current_blocked(const sigset_t *newset) @@ -3204,7 +3201,6 @@ SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, nset, if (nset) { if (copy_from_user(&new_set, nset, sizeof(*nset))) return -EFAULT; - new_set &= ~(sigmask(SIGKILL) | sigmask(SIGSTOP)); new_blocked = current->blocked; @@ -3222,7 +3218,7 @@ SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, nset, return -EINVAL; } - __set_current_blocked(&new_blocked); + set_current_blocked(&new_blocked); } if (oset) { -- 1.5.5.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-01-06 3:28 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <688203485.8555438.1357377797739.JavaMail.root@redhat.com>
[not found] ` <1757046472.8555813.1357378462241.JavaMail.root@redhat.com>
2013-01-05 18:12 ` [PATCH 0/2] Was: ssetmask/sgetmask syscalls Oleg Nesterov
2013-01-05 18:13 ` [PATCH 1/2] signals: sys_ssetmask() uses uninitialized newmask Oleg Nesterov
2013-01-06 3:28 ` CAI Qian
2013-01-05 18:13 ` [PATCH 2/2] signals: set_current_blocked() can use __set_current_blocked() Oleg Nesterov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox