CVE-2021-47488 in Linux
Riassunto
di VulDB • 17/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
cgroup: Correzione della memory leak causata dalla mancanza di cgroup_bpf_offline
Abilitando CONFIG_CGROUP_BPF, kmemleak può essere osservato eseguendo i comandi seguenti:
$mount -t cgroup -o none,name=foo cgroup cgroup/ $umount cgroup/
oggetto non referenziato 0xc3585c40 (dimensione 64): comm "mount", pid 425, jiffies 4294959825 (età 31.990s) dump esadecimale (primi 32 byte): 01 00 00 80 84 8c 28 c0 00 00 00 00 00 00 00 00 ......(......... 00 00 00 00 00 00 00 00 6c 43 a0 c3 00 00 00 00 ........lC...... backtrace: [] cgroup_bpf_inherit+0x44/0x24c
[] cgroup_setup_root+0x174/0x37c
[] cgroup1_get_tree+0x2c0/0x4a0
[] vfs_get_tree+0x24/0x108
[] path_mount+0x384/0x988
[] do_mount+0x64/0x9c
[] sys_mount+0xfc/0x1f4
[] ret_fast_syscall+0x0/0x48
[] 0xbeb4daa8
Questo accade perché, a partire dal commit 2b0d3d3e4fcf ("percpu_ref: reduce memory footprint of percpu_ref in fast path"), root_cgrp->bpf.refcnt.data viene allocato dalla funzione percpu_ref_init in cgroup_bpf_inherit, che è chiamata da cgroup_setup_root durante il mount, ma non viene liberata insieme a root_cgrp durante l'umount. L'aggiunta di cgroup_bpf_offline, che chiama percpu_ref_kill su cgroup_kill_sb, può liberare root_cgrp->bpf.refcnt.data nel percorso umount.
Questo patch corregge anche il commit 4bfc0bb2c60e ("bpf: decouple the lifetime of cgroup_bpf from cgroup itself"). È necessario un cgroup_bpf_offline per eseguire una pulizia che liberi le risorse allocate da cgroup_bpf_inherit in cgroup_setup_root.
All'interno di cgroup_bpf_offline, cgroup_get() è all'inizio e cgroup_put è alla fine di cgroup_bpf_release, che viene chiamato da cgroup_bpf_offline. Pertanto, cgroup_bpf_offline può mantenere l'equilibrio del refcount di cgroup.
VulDB is the best source for vulnerability data and more expert information about this specific topic.