again, I don't understand this code yet, but

On 05/17, Tycho Andersen wrote:
>
> +long seccomp_get_listener(struct task_struct *task,
> +                       unsigned long filter_off)
> +{
> +     struct seccomp_filter *filter;
> +     struct file *listener;
> +     int fd;
> +
> +     filter = get_nth_filter(task, filter_off);
> +     if (IS_ERR(filter))
> +             return PTR_ERR(filter);
> +
> +     fd = get_unused_fd_flags(O_RDWR);
> +     if (fd < 0) {
> +             __put_seccomp_filter(filter);
> +             return fd;
> +     }
> +
> +     listener = init_listener(task, task->seccomp.filter);
> +     if (IS_ERR(listener)) {
> +             put_unused_fd(fd);
> +             return PTR_ERR(listener);

__put_seccomp_filter() ?

and since init_listener() does __get_seccomp_filter() on sucess, it is needed
uncondtitionally?

Oleg.

Reply via email to