On Tue, Dec 4, 2018 at 11:49 AM Linus Torvalds <torva...@linux-foundation.org> wrote: > > because honestly, the *only* reason we hold on to that lock is for the > insane and not really interesting case of "somebody tried to use > ptrace to change the creds in-flight during the exec".
No, sorry, me confused. Not somebody trying to change them, it's just ptrace_attach() trying to change _our_ state during this sequence, and relying on it all being atomic. So taking a ref is unnecessary and pointless. It's not the creds that change, it's that we really want to delay ptrace_attach(). We could maybe set that "we're busy now" flag, and have ptrace_attach() do something like if (task_is_busy(task)) { sched_yield(); return -ERESTARTSYS; } or something like that. Linus