Hi, Oleg: Yes, it should be the "real_parent" that is more interested in the notification. Will revert back. +static void do_notify_parent_predump(void) +{ + struct task_struct *parent; + int sig; + + rcu_read_lock(); + parent = rcu_dereference(current->real_parent); + sig = parent->signal->predump_signal; + if (sig != 0) + do_send_sig_info(sig, SEND_SIG_NOINFO, parent, PIDTYPE_TGID); + rcu_read_unlock(); +} Thanks. -- Enke On 10/29/18 4:18 AM, Oleg Nesterov wrote: > Hi, > > On 10/26, Enke Chen wrote: >> >> This is really a good idea given that "parent" is declared as RCU-protected. >> Just a bit odd, though, that the "parent" has not been accessed this way in >> the code base. > > It is acccessed when possible, > >> So just to confirm: the revised code would look like the following: >> >> static void do_notify_parent_predump(void) >> { >> struct task_struct *parent; >> int sig; >> >> rcu_read_lock(); >> parent = rcu_dereference(current->parent); >> sig = parent->signal->predump_signal; >> if (sig != 0) >> do_send_sig_info(sig, SEND_SIG_NOINFO, parent, PIDTYPE_TGID); >> rcu_read_unlock(); >> } > > Yes, this is what I meant. > > But I still think do_notify_parent_predump() should notify ->real_parent, > not ->parent. > > Oleg. >