CVE-2026-31580

bcache: fix cached_dev.sb_bio use-after-free and crash

State
Published
Severity
Not scored
Published
Apr 24, 2026
Updated
Oct 15, 2026
Reserved
Mar 9, 2026

Read the record on cve.org

Description

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

bcache: fix cached_dev.sb_bio use-after-free and crash

In our production environment, we have received multiple crash reports regarding libceph, which have caught our attention:

``` [6888366.280350] Call Trace: [6888366.280452] blk_update_request+0x14e/0x370 [6888366.280561] blk_mq_end_request+0x1a/0x130 [6888366.280671] rbd_img_handle_request+0x1a0/0x1b0 [rbd] [6888366.280792] rbd_obj_handle_request+0x32/0x40 [rbd] [6888366.280903] __complete_request+0x22/0x70 [libceph] [6888366.281032] osd_dispatch+0x15e/0xb40 [libceph] [6888366.281164] ? inet_recvmsg+0x5b/0xd0 [6888366.281272] ? ceph_tcp_recvmsg+0x6f/0xa0 [libceph] [6888366.281405] ceph_con_process_message+0x79/0x140 [libceph] [6888366.281534] ceph_con_v1_try_read+0x5d7/0xf30 [libceph] [6888366.281661] ceph_con_workfn+0x329/0x680 [libceph] ```

After analyzing the coredump file, we found that the address of dc->sb_bio has been freed. We know that cached_dev is only freed when it is stopped.

Since sb_bio is a part of struct cached_dev, rather than an alloc every time. If the device is stopped while writing to the superblock, the released address will be accessed at endio.

This patch hopes to wait for sb_write to complete in cached_dev_free.

It should be noted that we analyzed the cause of the problem, then tell all details to the QWEN and adopted the modifications it made.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before 81f44ed8c3f54abb7561ece774ea4cca5070b2f2Affected
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before f50e7c325ab1207fe941555bcff659f6d7050572Affected
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before 9467d360be70e6ee55b0c1cd2a1f1424f57b5b85Affected
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before 47fa09fe7f3e09df28a51cb2cbd8f5d2f7f6edc1Affected
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before add4982510f3b7c318a2dd7438bdc9c63171e753Affected
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before 2d6965581e164fa2ba3f7652ddae5535f6336576Affected
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before 4f71c8ba2dc009042493021d94a9718fbe2ebf27Affected
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before 383f7fec0de8cee1cf7ae1f9d9f14044a61f10f9Affected
  • cafe563591446cf80bfbc2fe3bc72a2e36cf1060 to before fec114a98b8735ee89c75216c45a78e28be0f128Affected
LinuxLinux
  • 3.10Affected
  • before 3.10Not affected
  • 5.10.258 through 5.10.*Not affected
  • 5.15.209 through 5.15.*Not affected
  • 6.1.175 through 6.1.*Not affected
  • 6.6.136 through 6.6.*Not affected
  • 6.12.83 through 6.12.*Not affected
  • 6.18.24 through 6.18.*Not affected
  • 6.19.14 through 6.19.*Not affected
  • 7.0.1 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.