Re: [RFC v4 2/2] file, epoll: Implement do_replace() and eventpoll_replace()

From: Alok Tiagi
Date: Mon Mar 27 2023 - 16:40:52 EST


On Mon, Mar 27, 2023 at 07:16:39AM -0600, Tycho Andersen wrote:
> On Mon, Mar 27, 2023 at 07:06:46AM -0600, Tycho Andersen wrote:
> > On Mon, Mar 27, 2023 at 11:01:06AM +0200, Christian Brauner wrote:
> > > On Fri, Mar 24, 2023 at 07:43:13AM -0600, Tycho Andersen wrote:
> > > > Perhaps we could add a flag that people could set from SECCOMP_ADDFD
> > > > asking for this extra behavior?
> > >
> > > + if (fd > 0 && addfd->ioctl_flags & SECCOMP_ADDFD_FLAG_EPOLL) {
> > > + /*
> > > + * - retrieve old struct file that addfd->fd refered to if any.
> > > + * - call your epoll seccomp api to update the references in the epoll instance
> > > + */
> > > epoll_seccomp_notify()
> > > + }
> > > +
> > > + if (fd > 0 && addfd->ioctl_flags & SECCOMP_ADDFD_FLAG_IO_URING) {
> > > + /*
> > > + * - call your io_uring seccomp api to update the references in the io_uring instance
> > > + */
> > > io_uring_seccomp_notify()
> > > + }
> >
> > Looks reasonable to me, thanks.
>
> One change I might suggest is only using a single flag bit -- we don't
> need to consume all of seccomp's remaining flag bits with the various
> subsystems. If you want to do this logic for epoll, you almost
> certainly want it for io_uring, select, and whatever else is out
> there.
>
> Tycho

Thank you for your comment and thoughts on this Christian. The per-subsystem
helper and calling this from seccomp add fd looks like a cleaner API. I'll
address the changes in v5.