{"id":"CVE-2026-31580","state":"PUBLISHED","title":"bcache: fix cached_dev.sb_bio use-after-free and crash","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nbcache: fix cached_dev.sb_bio use-after-free and crash\n\nIn our production environment, we have received multiple crash reports\nregarding libceph, which have caught our attention:\n\n```\n[6888366.280350] Call Trace:\n[6888366.280452]  blk_update_request+0x14e/0x370\n[6888366.280561]  blk_mq_end_request+0x1a/0x130\n[6888366.280671]  rbd_img_handle_request+0x1a0/0x1b0 [rbd]\n[6888366.280792]  rbd_obj_handle_request+0x32/0x40 [rbd]\n[6888366.280903]  __complete_request+0x22/0x70 [libceph]\n[6888366.281032]  osd_dispatch+0x15e/0xb40 [libceph]\n[6888366.281164]  ? inet_recvmsg+0x5b/0xd0\n[6888366.281272]  ? ceph_tcp_recvmsg+0x6f/0xa0 [libceph]\n[6888366.281405]  ceph_con_process_message+0x79/0x140 [libceph]\n[6888366.281534]  ceph_con_v1_try_read+0x5d7/0xf30 [libceph]\n[6888366.281661]  ceph_con_workfn+0x329/0x680 [libceph]\n```\n\nAfter analyzing the coredump file, we found that the address of\ndc->sb_bio has been freed. We know that cached_dev is only freed when it\nis stopped.\n\nSince sb_bio is a part of struct cached_dev, rather than an alloc every\ntime.  If the device is stopped while writing to the superblock, the\nreleased address will be accessed at endio.\n\nThis patch hopes to wait for sb_write to complete in cached_dev_free.\n\nIt should be noted that we analyzed the cause of the problem, then tell\nall details to the QWEN and adopted the modifications it made.","publishedAt":"2026-04-24T14:42:10.874Z","updatedAt":"2026-10-15T01:17:05.087Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"81f44ed8c3f54abb7561ece774ea4cca5070b2f2","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"f50e7c325ab1207fe941555bcff659f6d7050572","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"9467d360be70e6ee55b0c1cd2a1f1424f57b5b85","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"47fa09fe7f3e09df28a51cb2cbd8f5d2f7f6edc1","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"add4982510f3b7c318a2dd7438bdc9c63171e753","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"2d6965581e164fa2ba3f7652ddae5535f6336576","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"4f71c8ba2dc009042493021d94a9718fbe2ebf27","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"383f7fec0de8cee1cf7ae1f9d9f14044a61f10f9","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"fec114a98b8735ee89c75216c45a78e28be0f128","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/bcache/super.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.10","versionType":"semver"},{"version":"5.10.258","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.209","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.136","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.83","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.24","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.14","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0.1","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/bcache/super.c"]}],"references":["https://git.kernel.org/stable/c/81f44ed8c3f54abb7561ece774ea4cca5070b2f2","https://git.kernel.org/stable/c/f50e7c325ab1207fe941555bcff659f6d7050572","https://git.kernel.org/stable/c/9467d360be70e6ee55b0c1cd2a1f1424f57b5b85","https://git.kernel.org/stable/c/47fa09fe7f3e09df28a51cb2cbd8f5d2f7f6edc1","https://git.kernel.org/stable/c/add4982510f3b7c318a2dd7438bdc9c63171e753","https://git.kernel.org/stable/c/2d6965581e164fa2ba3f7652ddae5535f6336576","https://git.kernel.org/stable/c/4f71c8ba2dc009042493021d94a9718fbe2ebf27","https://git.kernel.org/stable/c/383f7fec0de8cee1cf7ae1f9d9f14044a61f10f9","https://git.kernel.org/stable/c/fec114a98b8735ee89c75216c45a78e28be0f128","https://cert-portal.siemens.com/productcert/html/ssa-784472.html"],"weaknesses":[],"ingestedAt":"2026-10-29T20:11:40.391Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/31xxx/CVE-2026-31580.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-31580","state":"PUBLISHED","datePublished":"2026-04-24T14:42:10.874Z","dateUpdated":"2026-10-15T01:17:05.087Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-03-09T15:48:24.119Z"},"containers":{"cna":{"title":"bcache: fix cached_dev.sb_bio use-after-free and crash","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nbcache: fix cached_dev.sb_bio use-after-free and crash\n\nIn our production environment, we have received multiple crash reports\nregarding libceph, which have caught our attention:\n\n```\n[6888366.280350] Call Trace:\n[6888366.280452]  blk_update_request+0x14e/0x370\n[6888366.280561]  blk_mq_end_request+0x1a/0x130\n[6888366.280671]  rbd_img_handle_request+0x1a0/0x1b0 [rbd]\n[6888366.280792]  rbd_obj_handle_request+0x32/0x40 [rbd]\n[6888366.280903]  __complete_request+0x22/0x70 [libceph]\n[6888366.281032]  osd_dispatch+0x15e/0xb40 [libceph]\n[6888366.281164]  ? inet_recvmsg+0x5b/0xd0\n[6888366.281272]  ? ceph_tcp_recvmsg+0x6f/0xa0 [libceph]\n[6888366.281405]  ceph_con_process_message+0x79/0x140 [libceph]\n[6888366.281534]  ceph_con_v1_try_read+0x5d7/0xf30 [libceph]\n[6888366.281661]  ceph_con_workfn+0x329/0x680 [libceph]\n```\n\nAfter analyzing the coredump file, we found that the address of\ndc->sb_bio has been freed. We know that cached_dev is only freed when it\nis stopped.\n\nSince sb_bio is a part of struct cached_dev, rather than an alloc every\ntime.  If the device is stopped while writing to the superblock, the\nreleased address will be accessed at endio.\n\nThis patch hopes to wait for sb_write to complete in cached_dev_free.\n\nIt should be noted that we analyzed the cause of the problem, then tell\nall details to the QWEN and adopted the modifications it made."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"81f44ed8c3f54abb7561ece774ea4cca5070b2f2","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"f50e7c325ab1207fe941555bcff659f6d7050572","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"9467d360be70e6ee55b0c1cd2a1f1424f57b5b85","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"47fa09fe7f3e09df28a51cb2cbd8f5d2f7f6edc1","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"add4982510f3b7c318a2dd7438bdc9c63171e753","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"2d6965581e164fa2ba3f7652ddae5535f6336576","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"4f71c8ba2dc009042493021d94a9718fbe2ebf27","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"383f7fec0de8cee1cf7ae1f9d9f14044a61f10f9","versionType":"git"},{"version":"cafe563591446cf80bfbc2fe3bc72a2e36cf1060","status":"affected","lessThan":"fec114a98b8735ee89c75216c45a78e28be0f128","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/bcache/super.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.10","versionType":"semver"},{"version":"5.10.258","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.209","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.136","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.83","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.24","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.14","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0.1","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/bcache/super.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/81f44ed8c3f54abb7561ece774ea4cca5070b2f2"},{"url":"https://git.kernel.org/stable/c/f50e7c325ab1207fe941555bcff659f6d7050572"},{"url":"https://git.kernel.org/stable/c/9467d360be70e6ee55b0c1cd2a1f1424f57b5b85"},{"url":"https://git.kernel.org/stable/c/47fa09fe7f3e09df28a51cb2cbd8f5d2f7f6edc1"},{"url":"https://git.kernel.org/stable/c/add4982510f3b7c318a2dd7438bdc9c63171e753"},{"url":"https://git.kernel.org/stable/c/2d6965581e164fa2ba3f7652ddae5535f6336576"},{"url":"https://git.kernel.org/stable/c/4f71c8ba2dc009042493021d94a9718fbe2ebf27"},{"url":"https://git.kernel.org/stable/c/383f7fec0de8cee1cf7ae1f9d9f14044a61f10f9"},{"url":"https://git.kernel.org/stable/c/fec114a98b8735ee89c75216c45a78e28be0f128"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-06-14T17:42:06.405Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"5.10.258"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"5.15.209"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"6.1.175"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"6.6.136"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"6.12.83"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"6.18.24"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"6.19.14"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"7.0.1"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10","versionEndExcluding":"7.1"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"affected":[{"vendor":"Siemens","product":"SIMATIC S7-1500 TM MFP - GNU/Linux subsystem","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThan":"*","versionType":"custom"}]}],"references":[{"url":"https://cert-portal.siemens.com/productcert/html/ssa-784472.html"}],"providerMetadata":{"shortName":"siemens-SADP","orgId":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e","dateUpdated":"2026-10-15T01:17:05.087Z"},"x_adpType":"supplier"}]}}}