Skip to content

Commit

Permalink
cgroup: Homogenize cgroup_get_from_id() return value
Browse files Browse the repository at this point in the history
Cgroup id is user provided datum hence extend its return domain to
include possible error reason (similar to cgroup_get_from_fd()).

This change also fixes commit d4ccaf5 ("bpf: Introduce cgroup
iter") that would use NULL instead of proper error handling in
d4ccaf5 ("bpf: Introduce cgroup iter").

Additionally, neither of: fc_appid_store, bpf_iter_attach_cgroup,
mem_cgroup_get_from_ino (callers of cgroup_get_from_fd) is built without
CONFIG_CGROUPS (depends via CONFIG_BLK_CGROUP, direct, transitive
CONFIG_MEMCG respectively) transitive, so drop the singular definition
not needed with !CONFIG_CGROUPS.

Fixes: d4ccaf5 ("bpf: Introduce cgroup iter")
Signed-off-by: Michal Koutný <[email protected]>
Signed-off-by: Tejun Heo <[email protected]>
  • Loading branch information
Werkov authored and htejun committed Aug 26, 2022
1 parent 4534dee commit fa7e439
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 11 deletions.
4 changes: 2 additions & 2 deletions block/blk-cgroup-fc-appid.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ int blkcg_set_fc_appid(char *app_id, u64 cgrp_id, size_t app_id_len)
return -EINVAL;

cgrp = cgroup_get_from_id(cgrp_id);
if (!cgrp)
return -ENOENT;
if (IS_ERR(cgrp))
return PTR_ERR(cgrp);
css = cgroup_get_e_css(cgrp, &io_cgrp_subsys);
if (!css) {
ret = -ENOENT;
Expand Down
5 changes: 0 additions & 5 deletions include/linux/cgroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -750,11 +750,6 @@ static inline bool task_under_cgroup_hierarchy(struct task_struct *task,

static inline void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen)
{}

static inline struct cgroup *cgroup_get_from_id(u64 id)
{
return NULL;
}
#endif /* !CONFIG_CGROUPS */

#ifdef CONFIG_CGROUPS
Expand Down
4 changes: 2 additions & 2 deletions kernel/cgroup/cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -6005,7 +6005,7 @@ void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen)
/*
* cgroup_get_from_id : get the cgroup associated with cgroup id
* @id: cgroup id
* On success return the cgrp, on failure return NULL
* On success return the cgrp or ERR_PTR on failure
* Only cgroups within current task's cgroup NS are valid.
*/
struct cgroup *cgroup_get_from_id(u64 id)
Expand Down Expand Up @@ -6037,7 +6037,7 @@ struct cgroup *cgroup_get_from_id(u64 id)
cgrp = NULL;
}
out:
return cgrp;
return cgrp ?: ERR_PTR(-ENOENT);
}
EXPORT_SYMBOL_GPL(cgroup_get_from_id);

Expand Down
4 changes: 2 additions & 2 deletions mm/memcontrol.c
Original file line number Diff line number Diff line change
Expand Up @@ -5110,8 +5110,8 @@ struct mem_cgroup *mem_cgroup_get_from_ino(unsigned long ino)
struct mem_cgroup *memcg;

cgrp = cgroup_get_from_id(ino);
if (!cgrp)
return ERR_PTR(-ENOENT);
if (IS_ERR(cgrp))
return PTR_ERR(cgrp);

css = cgroup_get_e_css(cgrp, &memory_cgrp_subsys);
if (css)
Expand Down

0 comments on commit fa7e439

Please sign in to comment.