[PATCH RFC v2 3/3] pidfs: support FS_IOC_GETVERSION

Christian Brauner
2024-11-29T13:02:48Z

This will allow 32 bit userspace to detect when a given inode number has
been recycled and also to construct a unique 64 bit identifier.

Signed-off-by: Christian Brauner <brauner@kernel.org>
---
fs/pidfs.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/fs/pidfs.c b/fs/pidfs.c
index ff4f25078f3d983bce630e597adbb12262e5d727..f73a47e1d8379df886a90a044fb887f8d06f7c0b 100644
--- a/fs/pidfs.c
+++ b/fs/pidfs.c
@@ -262,6 +262,15 @@ static long pidfd_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
if (arg)
return -EINVAL;

+ switch (cmd) {
+ case FS_IOC32_GETVERSION:
+ fallthrough;
+ case FS_IOC_GETVERSION: {
+ __u32 __user *argp = (__u32 __user *)arg;
+ return put_user(file_inode(file)->i_generation, argp);
+ }
+ }
+
scoped_guard(task_lock, task) {
nsp = task->nsproxy;
if (nsp)

--
2.45.2