Oleg Nesterov <o...@redhat.com> writes: > On 07/17, Oleg Nesterov wrote: >> >> And, I didn't mention this yesterday, but probably the next 08/11 patch can >> have the same problem. But this is a bit more complicated because >> send_sigio() >> uses the same "type" both for do_each_pid_task() and as an argument passed to >> do_send_sig_info(). > > perhaps it can simply do > > if (type <= PIDTYPE_TGID) { > rcu_read_lock(); > p = pid_task(pid, PIDTYPE_PID); > send_sigio_to_task(p, fown, fd, band, type); > rcu_read_unlock(); > } else { > read_lock(&tasklist_lock); > do_each_pid_task(pid, type, p) { > send_sigio_to_task(p, fown, fd, band, type); > } while_each_pid_task(pid, type, p); > read_unlock(&tasklist_lock); > } > > this way we also avoid tasklist_lock in F_OWNER_TID/F_OWNER_PID case.
I like that. I updated that code in a different way but that looks more elegant and I think I will incoporate it. > To clarify, it is not that I think any sane application can do > fcntl(F_OWNER_PID, thread_tid) but still this is a user-visible change > we can easily avoid. Agreed. I do think Eric