On Fri, Sep 18, 2020 at 03:44:06PM +0200, Christoph Hellwig wrote: > On Fri, Sep 18, 2020 at 02:40:12PM +0100, Al Viro wrote: > > > /* Vector 0x110 is LINUX_32BIT_SYSCALL_TRAP */ > > > - return pt_regs_trap_type(current_pt_regs()) == 0x110; > > > + return pt_regs_trap_type(current_pt_regs()) == 0x110 || > > > + (current->flags & PF_FORCE_COMPAT); > > > > Can't say I like that approach ;-/ Reasoning about the behaviour is much > > harder when it's controlled like that - witness set_fs() shite... > > I don't particularly like it either. But do you have a better idea > how to deal with io_uring vs compat tasks? <wry> git rm fs/io_uring.c would make a good starting point </wry> Yes, I know it's not going to happen, but one can dream... Said that, why not provide a variant that would take an explicit "is it compat" argument and use it there? And have the normal one pass in_compat_syscall() to that...