Skip to content

Commit

Permalink
cgroup: cgroup_get_from_id() must check the looked-up kn is a directory
Browse files Browse the repository at this point in the history
cgroup has to be one kernfs dir, otherwise kernel panic is caused,
especially cgroup id is provide from userspace.

Reported-by: Marco Patalano <[email protected]>
Fixes: 6b658c4 ("scsi: cgroup: Add cgroup_get_from_id()")
Cc: Muneendra <[email protected]>
Signed-off-by: Ming Lei <[email protected]>
Acked-by: Mukesh Ojha <[email protected]>
Cc: [email protected] # v5.14+
Signed-off-by: Tejun Heo <[email protected]>
  • Loading branch information
Ming Lei authored and htejun committed Sep 23, 2022
1 parent a81e18e commit df02452
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion kernel/cgroup/cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -6049,14 +6049,17 @@ struct cgroup *cgroup_get_from_id(u64 id)
if (!kn)
goto out;

if (kernfs_type(kn) != KERNFS_DIR)
goto put;

rcu_read_lock();

cgrp = rcu_dereference(*(void __rcu __force **)&kn->priv);
if (cgrp && !cgroup_tryget(cgrp))
cgrp = NULL;

rcu_read_unlock();

put:
kernfs_put(kn);
out:
return cgrp;
Expand Down

0 comments on commit df02452

Please sign in to comment.