CVE-2026-31586

Updated on 24 Apr 2026

Severity

7.0 High severity

Details

CVSS score
7.0
CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Overview

About vulnerability

In the Linux kernel, the following vulnerability has been resolved:

mm: blk-cgroup: fix use-after-free in cgwb_release_workfn()

cgwb_release_workfn() calls css_put(wb->blkcg_css) and then later accesses wb->blkcg_css again via blkcg_unpin_online(). If css_put() drops the last reference, the blkcg can be freed asynchronously (css_free_rwork_fn -> blkcg_css_free -> kfree) before blkcg_unpin_online() dereferences the pointer to access blkcg->online_pin, resulting in a use-after-free:

BUG: KASAN: slab-use-after-free in blkcg_unpin_online (./include/linux/instrumented.h:112 ./include/linux/atomic/atomic-instrumented.h:400 ./include/linux/refcount.h:389 ./include/linux/refcount.h:432 ./include/linux/refcount.h:450 block/blk-cgroup.c:1367) Write of size 4 at addr ff11000117aa6160 by task kworker/71:1/531 Workqueue: cgwb_release cgwb_release_workfn Call Trace: <TASK> blkcg_unpin_online (./include/linux/instrumented.h:112 ./include/linux/atomic/atomic-instrumented.h:400 ./include/linux/refcount.h:389 ./include/linux/refcount.h:432 ./include/linux/refcount.h:450 block/blk-cgroup.c:1367) cgwb_release_workfn (mm/backing-dev.c:629) process_scheduled_works (kernel/workqueue.c:3278 kernel/workqueue.c:3385)

Freed by task 1016: kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6246 mm/slub.c:6561) css_free_rwork_fn (kernel/cgroup/cgroup.c:5542) process_scheduled_works (kernel/workqueue.c:3302 kernel/workqueue.c:3385)

** Stack based on commit 66672af7a095 (“Add linux-next specific files for 20260410”)

I am seeing this crash sporadically in Meta fleet across multiple kernel versions. A full reproducer is available at: https://github.com/leitao/debug/blob/main/reproducers/repro_blkcg_uaf.sh

(The race window is narrow. To make it easily reproducible, inject a msleep(100) between css_put() and blkcg_unpin_online() in cgwb_release_workfn(). With that delay and a KASAN-enabled kernel, the reproducer triggers the splat reliably in less than a second.)

Fix this by moving blkcg_unpin_online() before css_put(), so the cgwb’s CSS reference keeps the blkcg alive while blkcg_unpin_online() accesses it.

Details

Fixes

KernelCare state

Live-patch status from KernelCare for each operating system.

Operating system Status Covered kernels
AlmaLinux 9.2 ESU Planned
AlmaLinux 9.6 ESU Released
11 kernels
  • 5.14.0-570.62.1.el9_6.tuxcare.1.els1
  • 5.14.0-570.62.1.el9_6.tuxcare.1.els2
  • 5.14.0-570.62.1.el9_6.tuxcare.1.els3
  • 5.14.0-570.62.1.el9_6.tuxcare.1.els4
  • 5.14.0-570.62.1.el9_6.tuxcare.1.els5
  • 5.14.0-570.62.1.el9_6.tuxcare.1.els6
  • 5.14.0-570.62.1.el9_6.tuxcare.1.els7
  • 5.14.0-570.62.1.el9_6.tuxcare.5.els1
  • 5.14.0-570.62.1.el9_6.tuxcare.5.els2
  • 5.14.0-570.62.1.el9_6.tuxcare.5.els3
  • 5.14.0-570.62.1.el9_6.tuxcare.5.els4
Amazon Linux 2023 Released
57 kernels
  • 6.1.79-99.164.amzn2023
  • 6.1.84-99.169.amzn2023
  • 6.1.82-99.168.amzn2023
  • 6.1.90-99.173.amzn2023
  • 6.1.87-99.174.amzn2023
  • 6.1.91-99.172.amzn2023
  • 6.1.97-104.177.amzn2023
  • 6.1.94-99.176.amzn2023
  • 6.1.102-108.177.amzn2023
  • 6.1.106-116.188.amzn2023
  • 6.1.102-111.182.amzn2023
  • 6.1.79-99.167.amzn2023
  • 6.1.92-99.174.amzn2023
  • 6.1.96-102.177.amzn2023
  • 6.1.109-118.189.amzn2023
  • 6.1.112-122.189.amzn2023
  • 6.1.111-120.187.amzn2023
  • 6.1.115-126.197.amzn2023
  • 6.1.119-129.201.amzn2023
  • 6.1.124-134.200.amzn2023
  • 6.1.127-135.201.amzn2023
  • 6.1.128-136.201.amzn2023
  • 6.1.129-138.220.amzn2023
  • 6.1.130-139.222.amzn2023
  • 6.1.131-143.221.amzn2023
  • 6.1.132-147.221.amzn2023
  • 6.1.134-150.224.amzn2023
  • 6.1.112-124.190.amzn2023
  • 6.1.140-154.222.amzn2023
  • 6.1.141-155.222.amzn2023
  • 6.1.134-152.225.amzn2023
  • 6.1.144-170.251.amzn2023
  • 6.1.147-172.266.amzn2023
  • 6.1.148-173.267.amzn2023
  • 6.1.150-174.273.amzn2023
  • 6.1.141-165.249.amzn2023
  • 6.1.141-167.250.amzn2023
  • 6.1.147-172.259.amzn2023
  • 6.1.153-175.280.amzn2023
  • 6.1.155-176.282.amzn2023
  • 6.1.156-177.286.amzn2023
  • 6.1.158-178.288.amzn2023
  • 6.1.159-181.297.amzn2023
  • 6.1.163-186.299.amzn2023
  • 6.1.158-180.294.amzn2023
  • 6.1.159-182.297.amzn2023
  • 6.1.161-183.298.amzn2023
  • 6.1.164-196.303.amzn2023
  • 6.1.166-197.305.amzn2023
  • 6.1.168-203.330.amzn2023
  • 6.1.168-202.320.amzn2023
  • 6.1.170-210.320.amzn2023
  • 6.1.170-213.321.amzn2023
  • 6.1.172-216.329.amzn2023
  • 6.1.174-217.345.amzn2023
  • 6.1.172-216.339.amzn2023
  • 6.1.170-208.319.amzn2023
Debian 11 Released
37 kernels
  • 5.10.46-5
  • 5.10.70-1
  • 5.10.46-4
  • 5.10.84-1
  • 5.10.92-1
  • 5.10.92-2
  • 5.10.103-1
  • 5.10.106-1
  • 5.10.113-1
  • 5.10.120-1
  • 5.10.127-1
  • 5.10.127-2
  • 5.10.136-1
  • 5.10.140-1
  • 5.10.149-1
  • 5.10.149-2
  • 5.10.158-2
  • 5.10.162-1
  • 5.10.179-1
  • 5.10.179-2
  • 5.10.179-3
  • 5.10.179-5
  • 5.10.191-1
  • 5.10.197-1
  • 5.10.178-3
  • 5.10.205-2
  • 5.10.205-1
  • 5.10.209-2
  • 5.10.216-1
  • 5.10.218-1
  • 5.10.221-1
  • 5.10.223-1
  • 5.10.226-1
  • 5.10.234-1
  • 5.10.237-1
  • 5.10.244-1
  • 5.10.247-1
Debian 11 cloud Released
17 kernels
  • 5.10.113-1
  • 5.10.179-2
  • 5.10.179-3
  • 5.10.179-5
  • 5.10.191-1
  • 5.10.197-1
  • 5.10.205-2
  • 5.10.209-2
  • 5.10.216-1
  • 5.10.218-1
  • 5.10.221-1
  • 5.10.223-1
  • 5.10.226-1
  • 5.10.234-1
  • 5.10.237-1
  • 5.10.244-1
  • 5.10.247-1
Debian 12 Released
40 kernels
  • 6.1.38-1
  • 6.1.38-2
  • 6.1.38-4
  • 6.1.52-1
  • 6.1.55-1
  • 6.1.64-1
  • 6.1.66-1
  • 6.1.69-1
  • 6.1.76-1
  • 6.1.27-1
  • 6.1.67-1
  • 6.1.85-1
  • 6.1.90-1
  • 6.1.94-1
  • 6.1.99-1
  • 6.1.106-3
  • 6.1.112-1
  • 6.1.115-1
  • 6.1.119-1
  • 6.1.123-1
  • 6.1.128-1
  • 6.1.124-1
  • 6.1.129-1
  • 6.1.133-1
  • 6.1.135-1
  • 6.1.137-1
  • 6.1.140-1
  • 6.1.139-1
  • 6.1.147-1
  • 6.1.148-1
  • 6.1.153-1
  • 6.1.158-1
  • 6.1.159-1
  • 6.1.162-1
  • 6.1.164-1
  • 6.1.170-1
  • 6.1.170-3
  • 6.1.172-1
  • 6.1.174-1
  • 6.1.170-2
Debian 13 Planned
Ubuntu 22.04 Planned
Ubuntu 24.04 Planned