Merge branch 'exec-for-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiede...
[sfrench/cifs-2.6.git] / kernel / bpf / syscall.c
index 287be337d5f630613ebe1c1c214b89bdfaf5a0b2..4caf06fe41524f81d204ba650f4791c1bac86156 100644 (file)
@@ -3874,7 +3874,6 @@ static int bpf_task_fd_query(const union bpf_attr *attr,
        pid_t pid = attr->task_fd_query.pid;
        u32 fd = attr->task_fd_query.fd;
        const struct perf_event *event;
-       struct files_struct *files;
        struct task_struct *task;
        struct file *file;
        int err;
@@ -3892,23 +3891,11 @@ static int bpf_task_fd_query(const union bpf_attr *attr,
        if (!task)
                return -ENOENT;
 
-       files = get_files_struct(task);
-       put_task_struct(task);
-       if (!files)
-               return -ENOENT;
-
        err = 0;
-       spin_lock(&files->file_lock);
-       file = fcheck_files(files, fd);
+       file = fget_task(task, fd);
+       put_task_struct(task);
        if (!file)
-               err = -EBADF;
-       else
-               get_file(file);
-       spin_unlock(&files->file_lock);
-       put_files_struct(files);
-
-       if (err)
-               goto out;
+               return -EBADF;
 
        if (file->f_op == &bpf_link_fops) {
                struct bpf_link *link = file->private_data;
@@ -3948,7 +3935,6 @@ out_not_supp:
        err = -ENOTSUPP;
 put_file:
        fput(file);
-out:
        return err;
 }