History

cgroup: cgroup_get_from_id() must check the looked-up kn is a directory

cgroup has to be one kernfs dir, otherwise kernel panic is caused, especially cgroup id is provide from userspace.

Ming Lei committed 4 years ago

Commit df024521 parent a81e18e1 file · +4 −1Browse files

Unified · Split

kernel/cgroup/cgroup.c+4−1
@@ -6049,6 +6049,9 @@ struct cgroup *cgroup_get_from_id(u64 id) · 6048 unmodified lines
6049 if (!kn)6049 if (!kn)
6050 goto out;6050 goto out;
6051 6051
6052 if (kernfs_type(kn) != KERNFS_DIR)
6053 goto put;
6054
6052 rcu_read_lock();6055 rcu_read_lock();
6053 6056
6054 cgrp = rcu_dereference(*(void __rcu __force **)&kn->priv);6057 cgrp = rcu_dereference(*(void __rcu __force **)&kn->priv);
@@ -6056,7 +6059,7 @@ struct cgroup *cgroup_get_from_id(u64 id) · 1 unmodified line
6056 cgrp = NULL;6059 cgrp = NULL;
6057 6060
6058 rcu_read_unlock();6061 rcu_read_unlock();
6059 6062put:
6060 kernfs_put(kn);6063 kernfs_put(kn);
6061out:6064out:
6062 return cgrp;6065 return cgrp;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t