> 7. utrace_attach_task() has an implicit wmb() between "->utrace = new_utrace" > and "->utrace_flags = REAP", this is good. > > But, for example, tracehook_force_sigpending() does not have rmb(), > this means utrace_interrupt_pending() can OOPS in theory.
Ok. Please send a patch. Off hand it seems to me it isn't worth using a barrier because the winner of that race doesn't matter. So: struct utrace *utrace = task_utrace_struct(current); return likely(utrace) && utrace->resume == UTRACE_INTERRUPT; is fine, right? (With comment changes to explain the need for the check.) Thanks, Roland