lkml.org 
[lkml]   [2020]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 4/7] pid: move pidfd_get_pid function to pid.c
    Date
    process_madvise syscall needs pidfd_get_pid function to translate
    pidfd to pid so this patch move the function to kernel/pid.c.

    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Christian Brauner <christian@brauner.io>
    Reviewed-by: Suren Baghdasaryan <surenb@google.com>
    Suggested-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Reviewed-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Signed-off-by: Minchan Kim <minchan@kernel.org>
    ---
    include/linux/pid.h | 1 +
    kernel/exit.c | 17 -----------------
    kernel/pid.c | 17 +++++++++++++++++
    3 files changed, 18 insertions(+), 17 deletions(-)

    diff --git a/include/linux/pid.h b/include/linux/pid.h
    index 998ae7d24450..993f68cb45c2 100644
    --- a/include/linux/pid.h
    +++ b/include/linux/pid.h
    @@ -75,6 +75,7 @@ extern const struct file_operations pidfd_fops;
    struct file;

    extern struct pid *pidfd_pid(const struct file *file);
    +struct pid *pidfd_get_pid(unsigned int fd);

    static inline struct pid *get_pid(struct pid *pid)
    {
    diff --git a/kernel/exit.c b/kernel/exit.c
    index 764960fabfa1..8cad838c26d6 100644
    --- a/kernel/exit.c
    +++ b/kernel/exit.c
    @@ -1471,23 +1471,6 @@ static long do_wait(struct wait_opts *wo)
    return retval;
    }

    -static struct pid *pidfd_get_pid(unsigned int fd)
    -{
    - struct fd f;
    - struct pid *pid;
    -
    - f = fdget(fd);
    - if (!f.file)
    - return ERR_PTR(-EBADF);
    -
    - pid = pidfd_pid(f.file);
    - if (!IS_ERR(pid))
    - get_pid(pid);
    -
    - fdput(f);
    - return pid;
    -}
    -
    static long kernel_waitid(int which, pid_t upid, struct waitid_info *infop,
    int options, struct rusage *ru)
    {
    diff --git a/kernel/pid.c b/kernel/pid.c
    index 0f4ecb57214c..360ba480a2a9 100644
    --- a/kernel/pid.c
    +++ b/kernel/pid.c
    @@ -496,6 +496,23 @@ struct pid *find_ge_pid(int nr, struct pid_namespace *ns)
    return idr_get_next(&ns->idr, &nr);
    }

    +struct pid *pidfd_get_pid(unsigned int fd)
    +{
    + struct fd f;
    + struct pid *pid;
    +
    + f = fdget(fd);
    + if (!f.file)
    + return ERR_PTR(-EBADF);
    +
    + pid = pidfd_pid(f.file);
    + if (!IS_ERR(pid))
    + get_pid(pid);
    +
    + fdput(f);
    + return pid;
    +}
    +
    /**
    * pidfd_create() - Create a new pid file descriptor.
    *
    --
    2.25.0.265.gbab2e86ba0-goog
    \
     
     \ /
      Last update: 2020-03-02 20:37    [W:5.231 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site