projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
1722c14
)
pid: use pid_has_task() in pidfd_open()
author
Christian Brauner
<christian.brauner@ubuntu.com>
Thu, 17 Oct 2019 10:18:32 +0000
(12:18 +0200)
committer
Christian Brauner
<christian.brauner@ubuntu.com>
Thu, 17 Oct 2019 13:37:00 +0000
(15:37 +0200)
Use the new pid_has_task() helper in pidfd_open(). This simplifies the
code and avoids taking rcu_read_{lock,unlock}() and leads to overall
nicer code.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Link:
https://lore.kernel.org/r/20191017101832.5985-5-christian.brauner@ubuntu.com
kernel/pid.c
patch
|
blob
|
history
diff --git
a/kernel/pid.c
b/kernel/pid.c
index
124d40b
..
7b5f6c9
100644
(file)
--- a/
kernel/pid.c
+++ b/
kernel/pid.c
@@
-497,7
+497,7
@@
static int pidfd_create(struct pid *pid)
*/
SYSCALL_DEFINE2(pidfd_open, pid_t, pid, unsigned int, flags)
{
- int fd
, ret
;
+ int fd;
struct pid *p;
if (flags)
@@
-510,13
+510,11
@@
SYSCALL_DEFINE2(pidfd_open, pid_t, pid, unsigned int, flags)
if (!p)
return -ESRCH;
- ret = 0;
- rcu_read_lock();
- if (!pid_task(p, PIDTYPE_TGID))
- ret = -EINVAL;
- rcu_read_unlock();
+ if (pid_has_task(p, PIDTYPE_TGID))
+ fd = pidfd_create(p);
+ else
+ fd = -EINVAL;
- fd = ret ?: pidfd_create(p);
put_pid(p);
return fd;
}