On 10/14/24, 1:28 AM, "Peter Zijlstra" <peterz@infradead.org mailto:peterz@infradead.org> wrote:
On Sun, Oct 13, 2024 at 10:06:15AM -0700, Anjali Kulkarni wrote:
- if (unlikely(task->flags & PF_EXIT_NOTIFY)) {
- task_lock(task);
- task->flags &= ~PF_EXIT_NOTIFY;
- task_unlock(task);
@@ -413,6 +440,15 @@ static void cn_proc_mcast_ctl(struct cn_msg *msg, if (msg->len == sizeof(*pinput)) { pinput = (struct proc_input *)msg->data; mc_op = pinput->mcast_op;
- if (mc_op == PROC_CN_MCAST_NOTIFY) {
- pr_debug("%s: Received PROC_CN_MCAST_NOTIFY, pid %d\n",
- __func__, current->pid);
- task_lock(current);
- current->flags |= PF_EXIT_NOTIFY;
- task_unlock(current);
- err = cn_add_elem(pinput->uexit_code, current->pid);
- return;
- }
You seem to think that task_lock protects task->flags ? Why?
ANJALI> Missed this earlier, but it should actually not be needed, as both paths which modify the flags are via a syscall? I will go ahead and remove the locking, and send out in my next revision (if I missed anything let me know).