On Fri, Feb 14, 2014 at 08:13:02AM -0800, Christoph Hellwig wrote: > On Wed, Feb 12, 2014 at 01:32:55PM -0800, Linus Torvalds wrote: > > We'd have to teach each user of "dequeue_signal()" to free the siginfo > > thing. Which shouldn't be too bad - I think we've collected all of > > that into generic code, and there isn't the mass or architecture code > > that knows about these things any more. But there are a few odd > > drivers etc and signalfd. > > The few odd drivers are nbd, jffs2 and the usb mass storage gadget. > All of these have in common that they try to handle signals in a kernel > thread (which we don't even allow by default), and that they ignore the > siginfo. I think they could mostly be replaced by an addition to the > kthread API to allow a kthread to be killed by signals for legacy > reasons. FWIW, there's a funny situation - all users of dequeue_signal_lock() actually ignore info completely. I'm not saying that we ought to stop returning it, but e.g. jbd part of that patch is simply diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c index 2b60ce1..aefdff2 100644 --- a/fs/jffs2/background.c +++ b/fs/jffs2/background.c @@ -119,13 +119,14 @@ static int jffs2_garbage_collect_thread(void *_c) /* Put_super will send a SIGKILL and then wait on the sem. */ while (signal_pending(current) || freezing(current)) { - siginfo_t info; + ksiginfo_t info; unsigned long signr; if (try_to_freeze()) goto again; signr = dequeue_signal_lock(current, ¤t->blocked, &info); + dismiss_siginfo(&info); switch(signr) { case SIGSTOP: Not complicated at all. Where it does get complicated is ->last_siginfo and PTRACE_SETSIGINFO - getting that reasonably clean is what I'm still fighting right now... _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs