On Tue, 2011-09-20 at 17:35 +0530, Srikar Dronamraju wrote: > +#ifdef CONFIG_UPROBES > + if (!group && t->utask && t->utask->active_uprobe) > + pending = &t->utask->delayed; > +#endif > + > /* > * Short-circuit ignored signals and support queuing > * exactly one non-rt signal, so that we can get more > @@ -1106,6 +1111,11 @@ static int __send_signal(int sig, struct siginfo *info, struct task_struct *t, > } > } > > +#ifdef CONFIG_UPROBES > + if (!group && t->utask && t->utask->active_uprobe) > + return 0; > +#endif > + > out_set: > signalfd_notify(t, sig); > sigaddset(&pending->signal, sig); > @@ -1569,6 +1579,13 @@ int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) > } > q->info.si_overrun = 0; > > +#ifdef CONFIG_UPROBES > + if (!group && t->utask && t->utask->active_uprobe) { > + pending = &t->utask->delayed; > + list_add_tail(&q->list, &pending->list); > + goto out; > + } > +#endif > signalfd_notify(t, sig); > pending = group ? &t->signal->shared_pending : &t->pending; > list_add_tail(&q->list, &pending->list); > @@ -2199,7 +2216,10 @@ int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, > spin_unlock_irq(&sighand->siglock); > goto relock; > } > - > +#ifdef CONFIG_UPROBES > + if (current->utask && current->utask->active_uprobe) > + break; > +#endif That's just crying for something like: #ifdef CONFIG_UPROBES static inline bool uprobe_delay_signal(struct task_struct *p) { return p->utask && p->utask->active_uprobe; } #else static inline bool uprobe_delay_signal(struct task_struct *p) { return false; } #endif That'll instantly kill the #ifdeffery as well as describe wtf you're actually doing. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href