Messages in this thread | | | Date | Thu, 26 Jul 2018 18:21:44 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH v3 20/20] signal: Don't restart fork when signals come in. |
| |
On 07/24, Eric W. Biederman wrote: > > Similarly the current code will also miss blocked > signals that are delivered to multiple process, as those signals will > not appear pending during fork.
Well, I still think this needs a separate change and discussion...
Let me repeat, I simply do not know if this is good or not, I don't know if the current behaviour is by design or it is mistake.
OK, I won't argue but note that your patch doesn't really fix the problem,
> + spin_lock_irq(¤t->sighand->siglock); > + if (!(clone_flags & CLONE_THREAD)) > + hlist_add_head(&delayed.node, ¤t->signal->multiprocess); > + recalc_sigpending(); > + spin_unlock_irq(¤t->sighand->siglock); > + retval = -ERESTARTNOINTR; > + if (signal_pending(current)) > + goto fork_out;
because recalc_sigpending() will not notice the blocked multiprocess signal if it is already pending.
Oleg.
| |