Skip to content

Commit 190ecb1

Browse files
Qian Caihtejun
authored andcommitted
cgroup: fix psi_show() crash on 32bit ino archs
Similar to the commit d749534 ("cgroup: fix incorrect WARN_ON_ONCE() in cgroup_setup_root()"), cgroup_id(root_cgrp) does not equal to 1 on 32bit ino archs which triggers all sorts of issues with psi_show() on s390x. For example, BUG: KASAN: slab-out-of-bounds in collect_percpu_times+0x2d0/ Read of size 4 at addr 000000001e0ce000 by task read_all/3667 collect_percpu_times+0x2d0/0x798 psi_show+0x7c/0x2a8 seq_read+0x2ac/0x830 vfs_read+0x92/0x150 ksys_read+0xe2/0x188 system_call+0xd8/0x2b4 Fix it by using cgroup_ino(). Fixes: 7432103 ("cgroup: use cgrp->kn->id as the cgroup ID") Signed-off-by: Qian Cai <[email protected]> Acked-by: Johannes Weiner <[email protected]> Signed-off-by: Tejun Heo <[email protected]> Cc: [email protected] # v5.5
1 parent 9c974c7 commit 190ecb1

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

kernel/cgroup/cgroup.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3542,21 +3542,21 @@ static int cpu_stat_show(struct seq_file *seq, void *v)
35423542
static int cgroup_io_pressure_show(struct seq_file *seq, void *v)
35433543
{
35443544
struct cgroup *cgrp = seq_css(seq)->cgroup;
3545-
struct psi_group *psi = cgroup_id(cgrp) == 1 ? &psi_system : &cgrp->psi;
3545+
struct psi_group *psi = cgroup_ino(cgrp) == 1 ? &psi_system : &cgrp->psi;
35463546

35473547
return psi_show(seq, psi, PSI_IO);
35483548
}
35493549
static int cgroup_memory_pressure_show(struct seq_file *seq, void *v)
35503550
{
35513551
struct cgroup *cgrp = seq_css(seq)->cgroup;
3552-
struct psi_group *psi = cgroup_id(cgrp) == 1 ? &psi_system : &cgrp->psi;
3552+
struct psi_group *psi = cgroup_ino(cgrp) == 1 ? &psi_system : &cgrp->psi;
35533553

35543554
return psi_show(seq, psi, PSI_MEM);
35553555
}
35563556
static int cgroup_cpu_pressure_show(struct seq_file *seq, void *v)
35573557
{
35583558
struct cgroup *cgrp = seq_css(seq)->cgroup;
3559-
struct psi_group *psi = cgroup_id(cgrp) == 1 ? &psi_system : &cgrp->psi;
3559+
struct psi_group *psi = cgroup_ino(cgrp) == 1 ? &psi_system : &cgrp->psi;
35603560

35613561
return psi_show(seq, psi, PSI_CPU);
35623562
}

0 commit comments

Comments
 (0)