Thread (35 messages) 35 messages, 4 authors, 2021-04-28

Re: [PATCH 1/2] pidfd_create(): remove static qualifier and declare pidfd_create() in linux/pid.h

flat view

From: Christian Brauner <hidden>
Date: 2021-04-19 12:50:42
Also in: linux-fsdevel

On Fri, Apr 16, 2021 at 09:22:09AM +1000, Matthew Bobrowski wrote:
quoted hunk ↗ jump to hunk
With the idea to have fanotify(7) return pidfds within a `struct
fanotify_event_metadata`, pidfd_create()'s scope is to increased so
that it can be called from other subsystems within the Linux
kernel. The current `static` qualifier from its definition is to be
removed and a new function declaration for pidfd_create() is to be
added to the linux/pid.h header file.

Signed-off-by: Matthew Bobrowski <redacted>
---
 include/linux/pid.h | 1 +
 kernel/pid.c        | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/linux/pid.h b/include/linux/pid.h
index fa10acb8d6a4..af308e15f174 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -78,6 +78,7 @@ struct file;
 
 extern struct pid *pidfd_pid(const struct file *file);
 struct pid *pidfd_get_pid(unsigned int fd, unsigned int *flags);
+int pidfd_create(struct pid *pid, unsigned int flags);
 
 static inline struct pid *get_pid(struct pid *pid)
 {
diff --git a/kernel/pid.c b/kernel/pid.c
index ebdf9c60cd0b..91c4b6891c15 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -553,7 +553,7 @@ struct pid *pidfd_get_pid(unsigned int fd, unsigned int *flags)
  * Return: On success, a cloexec pidfd is returned.
  *         On error, a negative errno number will be returned.
  */
-static int pidfd_create(struct pid *pid, unsigned int flags)
+int pidfd_create(struct pid *pid, unsigned int flags)
Can you please add a comment to the kernel doc mentioning that this
helper is _not_ intended to be exported to modules? I don't want drivers
to get the idea that it's ok to start returning pidfds from everywhere
just yet.

And I think we should add sm like

	if (flags & ~(O_NONBLOCK | O_CLOEXEC | O_RDWR))
		return -EINVAL;

in pidfd_open() so future callers don't accidently create pidfds with
random flags we don't support.

Christian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help