seccomp: remove seccomp fd from event loop after task exited

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>
This commit is contained in:
Christian Brauner 2020-07-27 10:12:16 +02:00
parent aaab14d098
commit b2acb9dce9
No known key found for this signature in database
GPG Key ID: 8EB056D53EECB12D

View File

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