Oleg Nesterov <oleg@xxxxxxxxxx> wrote: > Change keyctl_session_to_parent() to use task_work_add() and > move key_replace_session_keyring() logic into task_work->func(). > > Note that we do task_work_cancel() before task_work_add() to > ensure that only one work can be pending at any time. This is > important, we must not allow user-space to abuse the parent's > ->task_works list. > > The callback, replace_session_keyring(), checks PF_EXITING. > I guess this is not really needed but looks better. > > As a side effect, this fixes the (unlikely) race. The callers > of key_replace_session_keyring() and keyctl_session_to_parent() > lack the necessary barriers, the parent can miss the request. > > Now we can remove task_struct->replacement_session_keyring and > related code. > > Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> Acked-by: David Howells <dhowells@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html