Quellcode durchsuchen

cgroup: deprecate remount option changes

This patch marks the following features for deprecation.

* Rebinding subsys by remount: Never reached useful state - only works
  on empty hierarchies.

* release_agent update by remount: release_agent itself will be
  replaced with conventional fsnotify notification.

v2: Lennart pointed out that "name=" is necessary for mounts w/o any
    controller attached.  Drop "name=" deprecation.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Lennart Poettering <mzxreary@0pointer.de>
Tejun Heo vor 13 Jahren
Ursprung
Commit
8b5a5a9dbc
2 geänderte Dateien mit 14 neuen und 0 gelöschten Zeilen
  1. 9 0
      Documentation/feature-removal-schedule.txt
  2. 5 0
      kernel/cgroup.c

+ 9 - 0
Documentation/feature-removal-schedule.txt

@@ -539,3 +539,12 @@ Why:	There appear to be no production users of the get_robust_list syscall,
 	of ASLR. It was only ever intended for debugging, so it should be
 	of ASLR. It was only ever intended for debugging, so it should be
 	removed.
 	removed.
 Who:	Kees Cook <keescook@chromium.org>
 Who:	Kees Cook <keescook@chromium.org>
+
+----------------------------
+
+What:	cgroup option updates via remount
+When:	March 2013
+Why:	Remount currently allows changing bound subsystems and
+	release_agent.  Rebinding is hardly useful as it only works
+	when the hierarchy is empty and release_agent itself should be
+	replaced with conventional fsnotify.

+ 5 - 0
kernel/cgroup.c

@@ -1294,6 +1294,11 @@ static int cgroup_remount(struct super_block *sb, int *flags, char *data)
 	if (ret)
 	if (ret)
 		goto out_unlock;
 		goto out_unlock;
 
 
+	/* See feature-removal-schedule.txt */
+	if (opts.subsys_bits != root->actual_subsys_bits || opts.release_agent)
+		pr_warning("cgroup: option changes via remount are deprecated (pid=%d comm=%s)\n",
+			   task_tgid_nr(current), current->comm);
+
 	/* Don't allow flags or name to change at remount */
 	/* Don't allow flags or name to change at remount */
 	if (opts.flags != root->flags ||
 	if (opts.flags != root->flags ||
 	    (opts.name && strcmp(opts.name, root->name))) {
 	    (opts.name && strcmp(opts.name, root->name))) {