Skip to content

Commit

Permalink
pid: move pidfd_get_pid() to pid.c
Browse files Browse the repository at this point in the history
process_madvise syscall needs pidfd_get_pid function to translate pidfd to
pid so this patch move the function to kernel/pid.c.

Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Minchan Kim <[email protected]>
Reviewed-by: Suren Baghdasaryan <[email protected]>
Suggested-by: Alexander Duyck <[email protected]>
Reviewed-by: Alexander Duyck <[email protected]>
Acked-by: Christian Brauner <[email protected]>
Reviewed-by: Vlastimil Babka <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: Jann Horn <[email protected]>
Cc: Brian Geffon <[email protected]>
Cc: Daniel Colascione <[email protected]>
Cc: Joel Fernandes <[email protected]>
Cc: Johannes Weiner <[email protected]>
Cc: John Dias <[email protected]>
Cc: Kirill Tkhai <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Oleksandr Natalenko <[email protected]>
Cc: Sandeep Patil <[email protected]>
Cc: SeongJae Park <[email protected]>
Cc: SeongJae Park <[email protected]>
Cc: Shakeel Butt <[email protected]>
Cc: Sonny Rao <[email protected]>
Cc: Tim Murray <[email protected]>
Cc: Christian Brauner <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Stephen Rothwell <[email protected]>
  • Loading branch information
minchank authored and sfrothwell committed Jun 5, 2020
1 parent 16bce6d commit 6eb852d
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 17 deletions.
1 change: 1 addition & 0 deletions include/linux/pid.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,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)
{
Expand Down
17 changes: 0 additions & 17 deletions kernel/exit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1474,23 +1474,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)
{
Expand Down
17 changes: 17 additions & 0 deletions kernel/pid.c
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,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.
*
Expand Down

0 comments on commit 6eb852d

Please sign in to comment.