Re: [PATCH 2/5] seccomp: Introduce addfd ioctl to seccomp user notifier

From: Sargun Dhillon
Date: Sun May 24 2020 - 20:29:09 EST


On Sun, May 24, 2020 at 5:05 PM Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
>
> On Sun, May 24, 2020 at 04:39:39PM -0700, Sargun Dhillon wrote:
>
> Bad refcounting rules. *IF* we go with anything of that sort (and I'm not
> convinced that the entire series makes sense), it's better to have more
> uniform rules re reference consumption/disposal.
>
> Make the destructor of addfd *ALWAYS* drop its reference. And have this
> function go
Are you suggesting the in both the error, and non-error cases the ioctl
invoker side is responsible for fput'ing the final reference in both the
success and non-success cases? Would we take an extra reference
prior to fd_install?
>
> if (addfd->fd >= 0) {
> ret = replace_fd(addfd->fd, addfd->file, addfd->flags);
> } else {
> ret = get_unused_fd_flags(addfd->flags);
> if (ret >= 0)
> fd_install(ret, get_file(addfd->file));
> }
>
Wouldn't this result in consumption of reference in one case (fd_install),
and the fd still having a reference in the replace_fd case?