> get_utrace_lock() must threat utrace->reap == T as engine->ops == NULL.
Yes, I think you're right. This requires some changes to the kerneldoc and
utrace.tmpl, because it now says that you get EALREADY if report_reap is
already running. Now it will be consistent with utrace_control, where you
get_utrace_lock() must threat utrace->reap == T as engine->ops == NULL.
The logic in get_utrace_lock() is correct. If we see engine->ops != NULL
under rcu_read_lock(), the target has not passed release_task() yet, so
it is safe to dereference target/utrace and take utrace->lock.
However. If utrac