On Thu, Jun 10, 2021 at 1:58 PM Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote:
The problem is sometimes we read all of the registers from a context where they are not all saved.
Ouch. Yes. And this is really painful because none of the *normal* architectures do this, so it gets absolutely no coverage.
I think at this point we need to say that the architectures that have a do this need to be fixed to at least call do_exit and the kernel function in create_io_thread with the deeper stack.
Yeah. We traditionally have that requirement for fork() and friends too (vfork/clone), so adding exit and io_uring to do so seems like the most straightforward thing. But I really wish we had some way to test and trigger this so that we wouldn't get caught on this before. Something in task_pt_regs() that catches "this doesn't actually work" and does a WARN_ON_ONCE() on the affected architectures? Linus