[PATCH 1/2] nsfs: Add namespace-specific ioctl (NS_SPECIFIC_IOC)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Some namespaces types want have their own ioctls.
For, example, pid namespace needs a ioctl, allowing
to set vector of ns_last_pid on namespaces hierarchy.

This patch introduces proc_ns_operations::ns_ioctl()
to allow namespaces determine specific ioctls.

Signed-off-by: Kirill Tkhai <ktkhai@xxxxxxxxxxxxx>
---
 fs/nsfs.c                 |    4 ++++
 include/linux/proc_ns.h   |    1 +
 include/uapi/linux/nsfs.h |    2 ++
 3 files changed, 7 insertions(+)

diff --git a/fs/nsfs.c b/fs/nsfs.c
index 1656843e87d2..fed7e5c59e9c 100644
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -185,6 +185,10 @@ static long ns_ioctl(struct file *filp, unsigned int ioctl,
 		argp = (uid_t __user *) arg;
 		uid = from_kuid_munged(current_user_ns(), user_ns->owner);
 		return put_user(uid, argp);
+	case NS_SPECIFIC_IOC:
+		if (!ns->ops->ns_ioctl)
+			return -ENOTTY;
+		return ns->ops->ns_ioctl(ns, arg);
 	default:
 		return -ENOTTY;
 	}
diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h
index 12cb8bd81d2d..c645a2174933 100644
--- a/include/linux/proc_ns.h
+++ b/include/linux/proc_ns.h
@@ -20,6 +20,7 @@ struct proc_ns_operations {
 	int (*install)(struct nsproxy *nsproxy, struct ns_common *ns);
 	struct user_namespace *(*owner)(struct ns_common *ns);
 	struct ns_common *(*get_parent)(struct ns_common *ns);
+	long (*ns_ioctl)(struct ns_common *ns, unsigned long arg);
 };
 
 extern const struct proc_ns_operations netns_operations;
diff --git a/include/uapi/linux/nsfs.h b/include/uapi/linux/nsfs.h
index 1a3ca79f466b..544bbb661475 100644
--- a/include/uapi/linux/nsfs.h
+++ b/include/uapi/linux/nsfs.h
@@ -14,5 +14,7 @@
 #define NS_GET_NSTYPE		_IO(NSIO, 0x3)
 /* Get owner UID (in the caller's user namespace) for a user namespace */
 #define NS_GET_OWNER_UID	_IO(NSIO, 0x4)
+/* Execute namespace-specific ioctl */
+#define NS_SPECIFIC_IOC		_IO(NSIO, 0x5)
 
 #endif /* __LINUX_NSFS_H */

--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux