On Fri, Jul 14, 2023, at 17:47, Christian Brauner wrote: > On Tue, Jul 11, 2023 at 04:18:13PM -0600, Jens Axboe wrote: >> On 7/11/23 3:22 PM, Jens Axboe wrote: >> > On 7/11/23 3:11?PM, Arnd Bergmann wrote: >> >> Does this require argument conversion for compat tasks? >> >> >> >> Even without the rusage argument, I think the siginfo >> >> remains incompatible with 32-bit tasks, unfortunately. >> > >> > Hmm yes good point, if compat_siginfo and siginfo are different, then it >> > does need handling for that. Would be a trivial addition, I'll make that >> > change. Thanks Arnd! >> >> Should be fixed in the current version: >> >> https://git.kernel.dk/cgit/linux/commit/?h=io_uring-waitid&id=08f3dc9b7cedbd20c0f215f25c9a7814c6c601cc > > In kernel/signal.c in pidfd_send_signal() we have > copy_siginfo_from_user_any() it seems that a similar version > copy_siginfo_to_user_any() might be something to consider. We do have > copy_siginfo_to_user32() and copy_siginfo_to_user(). But I may lack > context why this wouldn't work here. We could add a copy_siginfo_to_user_any(), but I think open-coding it is easier here, since the in_compat_syscall() check does not work inside of the io_uring kernel thread, it has to be "if (req->ctx->compat)" in order to match the wordsize of the task that started the request. Using copy_siginfo_to_user32() and copy_siginfo_to_user() is probably a good idea though, it's often faster and less error-prone than writing each member separately. Arnd