Thanks for working on this, Ananth. (Btw, it's "embed.") I think it would be less disruptive (and materially no different) to leave utrace_flags as it is. That field is the one (and only) that is used in hot paths (or used anywhere outside utrace.c). It might in future get moved around to stay in a cache-hot part of task_struct, for example.
The long comment above struct utrace is really all about implementation details inside utrace.c and I don't think you should move that commentary to the header file. Instead, put a comment saying that the contents of struct utrace and their use is entirely private to kernel/utrace.c and it is only defined in the header to make its size known for struct task_struct layout (and init_task.h). I committed some cosmetic changes that will make for a little less flutter in your patch. Thanks, Roland