On Wed, Apr 29, 2020 at 3:38 PM Linus Torvalds <torva...@linux-foundation.org> wrote: > > If you do it properly, with a helper function instead of repeating > that fragile nasty thing, maybe it will look better to me.
Side note: if it has a special helper function for the "get lock, repeat if it was invalid", you can do a better job than return -EAGAIN. In particular, you can do this set_thread_flag(TIF_SIGPENDING); return -RESTARTNOINTR; which will actually restart the system call. So a ptrace() user (or somebody doing a "write()" to /proc/<pid>/attr/xyz, wouldn't even see the impossible EAGAIN error. But that all requires that you have some locking helper routines like int lock_exec_creds(struct task_struct *); void unlock_exec_guard(struct task_struct *); because there's no way we put that kind of super-fragile code in several places. It would be very much one single routine with a *HUGE* comment on it. Linus