]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
seccomp: remove seccomp fd from event loop after task exited 3499/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Mon, 27 Jul 2020 08:12:16 +0000 (10:12 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 27 Jul 2020 08:15:20 +0000 (10:15 +0200)
Linux v5.8 will land my patch where seccomp notifies when a filter goes unused,
i.e. when the last task using a given seccomp filter has exited. This wasn't
possible before and so we accumulated file descriptors in the container's event
loop whenever we attached to the container.
I'm not sure whether the task exiting before we could handle its syscall should
cause us to report and error or not. For now, let's simply close the event loop
and not report an error.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/seccomp.c

index 66f9a70f228e913b5288849eaac0c5e99c6e0185..55216bc0b69c7080124868f8242acffc9930b488 100644 (file)
@@ -1373,6 +1373,9 @@ int seccomp_notify_handler(int fd, uint32_t events, void *data,
        char *cookie = conf->seccomp.notifier.cookie;
        uint64_t req_id;
 
+       if (events & EPOLLHUP)
+               return log_trace(LXC_MAINLOOP_CLOSE, "Syscall supervisee already exited");
+
        memset(req, 0, sizeof(*req));
        ret = seccomp_notify_receive(fd, req);
        if (ret) {