On Fri, Apr 30, 2021 at 4:23 PM Andy Lutomirski <luto@xxxxxxxxxx> wrote: > > On Fri, Apr 30, 2021 at 1:49 PM Sargun Dhillon <sargun@xxxxxxxxx> wrote: > > > > The user notifier feature allows for filtering of seccomp notifications in > > userspace. While the user notifier is handling the syscall, the notifying > > process can be preempted, thus ending the notification. This has become a > > growing problem, as Golang has adopted signal based async preemption[1]. In > > this, it will preempt every 10ms, thus leaving the supervisor less than > > 10ms to respond to a given notification. If the syscall require I/O (mount, > > connect) on behalf of the process, it can easily take 10ms. > > > > This allows the supervisor to set a flag that moves the process into a > > state where it is only killable by terminating signals as opposed to all > > signals. The process can still be terminated before the supervisor receives > > the notification. > > This is still racy, right? If a signal arrives after the syscall > enters the seccomp code but before the supervisor gets around to > issuing the new ioctl, the syscall will erroneously return -EINTR, > right? > > Can we please just fully fix this instead of piling a racy partial fix > on top of an incorrect design? > > --Andy I thought that you were fine with this approach. Sorry. Maybe this is a dumb question, what's wrong with returning an EINTR if the syscall was never observed by the supervisor? I think that the only other reasonable design is that we add data to the existing action which makes it sleep in wait_killable state. _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers