Skip to contentSkip to conversation

a new optional function for task assignment to cgroup

RFC PATCH New Kazunaga Ikeno 1 participant 1 message Mar 5, 2008 cgroup

lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 a new optional function for task assignment to cgroup

From: Kazunaga Ikeno <[email protected]>

This patch provides the function leads a task, corresponding to specified user-id, to a specific cgroup directory.

kernel/sys.c +13 -0
Index: linux-2.6.25-rc3-mm1/kernel/sys.c
================================================================================
@@ -33,6 +33,7 @@
 #include <linux/task_io_accounting_ops.h>
 #include <linux/seccomp.h>
 #include <linux/cpu.h>
+#include <linux/cgroup.h>
 
 #include <linux/compat.h>
 #include <linux/syscalls.h>
@@ -644,6 +645,10 @@ asmlinkage long sys_setreuid(uid_t ruid,
 	key_fsuid_changed(current);
 	proc_id_connector(current, PROC_EVENT_UID);
 
+	retval = cgroup_attach_by_uid(current);
+	if (retval)
+		return retval;
+
 	return security_task_post_setuid(old_ruid, old_euid, old_suid, LSM_SETID_RE);
 }
 
@@ -691,6 +696,10 @@ asmlinkage long sys_setuid(uid_t uid)
 	key_fsuid_changed(current);
 	proc_id_connector(current, PROC_EVENT_UID);
 
+	retval = cgroup_attach_by_uid(current);
+	if (retval)
+		return retval;
+
 	return security_task_post_setuid(old_ruid, old_euid, old_suid, LSM_SETID_ID);
 }
 
@@ -739,6 +748,10 @@ asmlinkage long sys_setresuid(uid_t ruid
 	key_fsuid_changed(current);
 	proc_id_connector(current, PROC_EVENT_UID);
 
+	retval = cgroup_attach_by_uid(current);
+	if (retval)
+		return retval;
+
 	return security_task_post_setuid(old_ruid, old_euid, old_suid, LSM_SETID_RES);
 }
 
include/linux/cgroup.h +2 -0
Index: linux-2.6.25-rc3-mm1/include/linux/cgroup.h
================================================================================
@@ -30,6 +30,7 @@ extern void cgroup_unlock(void);
 extern void cgroup_fork(struct task_struct *p);
 extern void cgroup_fork_callbacks(struct task_struct *p);
 extern void cgroup_post_fork(struct task_struct *p);
+extern int cgroup_attach_by_uid(struct task_struct *p);
 extern void cgroup_exit(struct task_struct *p, int run_callbacks);
 extern int cgroupstats_build(struct cgroupstats *stats,
 				struct dentry *dentry);
@@ -356,6 +357,7 @@ static inline void cgroup_init_smp(void)
 static inline void cgroup_fork(struct task_struct *p) {}
 static inline void cgroup_fork_callbacks(struct task_struct *p) {}
 static inline void cgroup_post_fork(struct task_struct *p) {}
+static inline int cgroup_attach_by_uid(struct task_struct *p) {}
 static inline void cgroup_exit(struct task_struct *p, int callbacks) {}
 
 static inline void cgroup_lock(void) {}
kernel/cgroup.c +192 -0

240 lines not on this page · raw message

--
-