On Fri, Sep 11, 2020 at 04:08:45PM -0400, Gabriel Krisman Bertazi wrote: > peterz@xxxxxxxxxxxxx writes: > > > On Fri, Sep 04, 2020 at 04:31:39PM -0400, Gabriel Krisman Bertazi wrote: > >> +static inline void __set_tsk_syscall_intercept(struct task_struct *tsk, > >> + unsigned int type) > >> +{ > >> + tsk->syscall_intercept |= type; > >> + > >> + if (tsk->syscall_intercept) > >> + set_tsk_thread_flag(tsk, TIF_SYSCALL_INTERCEPT); > >> +} > > > > Did the above want to be: > > > > unsigned int old = tsk->syscall_intercept; > > tsk->syscall_intercept |= type; > > if (!old) > > set_tsk_thread_flag(tsk, TIF_SYSCALL_INTERCEPT) > > > > Hi Peter, > > Thanks for the review! > > I'm not sure this change gains us anything. For now, > __set_tsk_syscall_intercept cannot be called with !type, so both > versions behave the same, but my version is safe with that scenario. > This won't be called frequent enough for the extra calls to > set_tsk_thread_flag matter. Am I missing something? Your version will do set_tsk_thread_flag() for every invocation (assuming non-zero type). That's sub-optimal.