CVE-2026-64567

Updated on 05 Aug 2026

Severity

7.8 High severity

Details

CVSS score
7.8
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:

btrfs: reject free space cache with more entries than pages

When loading a v1 free space cache, __load_free_space_cache() takes num_entries and num_bitmaps straight from the on-disk btrfs_free_space_header. That header is stored in the tree_root under a key with type 0, which the tree-checker has no case for, so neither count is validated before the load trusts it.

The load loops num_entries times and maps the next page whenever the current one runs out, going through io_ctl_check_crc() -> io_ctl_map_page(), which does io_ctl->pages[io_ctl->index++]. But pages[] is allocated in io_ctl_init() from the cache inode’s i_size, not from num_entries:

num_pages = DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE); io_ctl->pages = kcalloc(num_pages, sizeof(struct page *), GFP_NOFS);

So if num_entries claims more records than the pages can hold, io_ctl->index runs off the end of pages[]. The write side never hits this because io_ctl_add_entry() and io_ctl_add_bitmap() both stop once io_ctl->index >= io_ctl->num_pages; the read side just never had the same check.

To trigger it, take a clean cache (num_entries = <N> here), set num_entries in the header to 0x10000, and fix up the leaf checksum so it still passes the tree-checker. The cache inode has i_size = 65536, so num_pages is 16 and pages[] is a 16-pointer (kmalloc-128) array. The load now tries to read 65536 entries, io_ctl->index walks up to 16, and pages[16] is read past the array:

BUG: KASAN: slab-out-of-bounds in io_ctl_check_crc (fs/btrfs/free-space-cache.c:420 fs/btrfs/free-space-cache.c:565) Read of size 8 at addr ffff88800c833a80 by task kworker/u8:3/58 io_ctl_check_crc (fs/btrfs/free-space-cache.c:420 fs/btrfs/free-space-cache.c:565) __load_free_space_cache (fs/btrfs/free-space-cache.c:655 fs/btrfs/free-space-cache.c:820) load_free_space_cache (fs/btrfs/free-space-cache.c:1017) caching_thread (fs/btrfs/block-group.c:880) btrfs_work_helper (fs/btrfs/async-thread.c:312) process_one_work worker_thread kthread ret_from_fork

free-space-cache.c:420 is io_ctl_map_page(), inlined into io_ctl_check_crc() at line 565, which is why that is the frame KASAN names. The out-of-bounds slot is then treated as a struct page and handed to crc32c(), so the bad read turns into a GP fault.

Add the missing check to io_ctl_check_crc(), which is where both the entry loop and the bitmap loop end up. When num_entries is too large the load now fails like any corrupt cache: __load_free_space_cache() drops it and rebuilds the free space from the extent tree, so a valid cache is never rejected.

Details

Fixes

KernelCare state

Live-patch status from KernelCare for each operating system.

Operating system Status Covered kernels
CentOS 7 ELS Released
36 kernels
  • 3.10.0-1160.119.1.el7.tuxcare.els10
  • 3.10.0-1160.119.1.el7.tuxcare.els4
  • 3.10.0-1160.119.1.el7.tuxcare.els6
  • 3.10.0-1160.119.1.el7.tuxcare.els15
  • 3.10.0-1160.119.1.el7.tuxcare.els5
  • 3.10.0-1160.119.1.el7.tuxcare.els3
  • 3.10.0-1160.119.1.el7.tuxcare.els14
  • 3.10.0-1160.119.1.el7.tuxcare.els16
  • 3.10.0-1160.119.1.el7.tuxcare.els13
  • 3.10.0-1160.119.1.el7.tuxcare.els7
  • 3.10.0-1160.119.1.el7.tuxcare.els12
  • 3.10.0-1160.119.1.el7.tuxcare.els9
  • 3.10.0-1160.119.1.el7.tuxcare.els8
  • 3.10.0-1160.119.1.el7.tuxcare.els17
  • 3.10.0-1160.119.1.el7.tuxcare.els18
  • 3.10.0-1160.119.1.el7.tuxcare.els19
  • 3.10.0-1160.119.1.el7.tuxcare.els20
  • 3.10.0-1160.119.1.el7.tuxcare.els21
  • 3.10.0-1160.119.1.el7.tuxcare.els24
  • 3.10.0-1160.119.1.el7.tuxcare.els22
  • 3.10.0-1160.119.1.el7.tuxcare.els25
  • 3.10.0-1160.139.1.el7.tuxcare.els2
  • 3.10.0-1160.139.1.el7.tuxcare.els3
  • 3.10.0-1160.139.1.el7.tuxcare.els4
  • 3.10.0-1160.142.1.el7.tuxcare.els1
  • 3.10.0-1160.144.1.el7.tuxcare.els1
  • 3.10.0-1160.144.1.el7.tuxcare.els2
  • 3.10.0-1160.144.1.el7.tuxcare.els3
  • 3.10.0-1160.144.1.el7.tuxcare.els4
  • 3.10.0-1160.144.1.el7.tuxcare.els5
  • 3.10.0-1160.144.1.el7.tuxcare.els6
  • 3.10.0-1160.144.1.el7.tuxcare.els8
  • 3.10.0-1160.144.1.el7.tuxcare.els7
  • 3.10.0-1160.144.1.el7.tuxcare.els9
  • 3.10.0-1160.156.1.el7.tuxcare.els1
  • 3.10.0-1160.156.1.el7.tuxcare.els2
Debian 12 Planned —
Debian 13 Released
14 kernels
  • 6.12.85-1
  • 6.12.86-1
  • 6.12.88-1
  • 6.12.74-2
  • 6.12.73-1
  • 6.12.63-1
  • 6.12.69-1
  • 6.12.74-1
  • 6.12.90-1
  • 6.12.90-2
  • 6.12.94-1
  • 6.12.95-1
  • 6.12.96-1
  • 6.12.100-1
Oracle Linux 8 UEK 7 Released
112 kernels
  • 5.15.0-102.110.5.el8uek
  • 5.15.0-101.103.2.1.el8uek
  • 5.15.0-8.91.4.1.el8uek
  • 5.15.0-7.86.6.1.el8uek
  • 5.15.0-2.52.3.el8uek
  • 5.15.0-100.96.32.el8uek
  • 5.15.0-5.76.5.1.el8uek
  • 5.15.0-6.80.3.1.el8uek
  • 5.15.0-3.60.5.1.el8uek
  • 5.15.0-0.30.20.el8uek
  • 5.15.0-1.43.4.1.el8uek
  • 5.15.0-0.30.20.1.el8uek
  • 5.15.0-1.43.4.2.el8uek
  • 5.15.0-4.70.5.2.el8uek
  • 5.15.0-104.119.4.2.el8uek
  • 5.15.0-0.30.19.el8uek
  • 5.15.0-105.125.6.2.el8uek
  • 5.15.0-105.125.6.2.1.el8uek
  • 5.15.0-105.125.6.2.2.el8uek
  • 5.15.0-106.131.4.el8uek
  • 5.15.0-200.131.27.el8uek
  • 5.15.0-200.131.27.1.el8uek
  • 5.15.0-201.135.6.el8uek
  • 5.15.0-202.135.2.el8uek
  • 5.15.0-102.110.5.1.el8uek
  • 5.15.0-103.114.4.el8uek
  • 5.15.0-203.146.5.1.el8uek
  • 5.15.0-204.147.6.2.el8uek
  • 5.15.0-204.147.6.3.el8uek
  • 5.15.0-205.149.5.1.el8uek
  • 5.15.0-205.149.5.4.el8uek
  • 5.15.0-206.153.7.el8uek
  • 5.15.0-206.153.7.1.el8uek
  • 5.15.0-207.156.6.el8uek
  • 5.15.0-208.159.3.el8uek
  • 5.15.0-208.159.3.2.el8uek
  • 5.15.0-209.161.7.el8uek
  • 5.15.0-209.161.7.1.el8uek
  • 5.15.0-209.161.7.2.el8uek
  • 5.15.0-210.163.7.el8uek
  • 5.15.0-300.163.18.el8uek
  • 5.15.0-300.163.18.1.el8uek
  • 5.15.0-300.163.18.1.1.el8uek
  • 5.15.0-301.163.5.2.el8uek
  • 5.15.0-302.167.6.el8uek
  • 5.15.0-300.163.18.7.el8uek
  • 5.15.0-302.167.6.1.el8uek
  • 5.15.0-303.171.5.2.el8uek
  • 5.15.0-303.171.5.2.1.el8uek
  • 5.15.0-304.171.4.el8uek
  • 5.15.0-304.171.4.1.el8uek
  • 5.15.0-304.171.4.3.el8uek
  • 5.15.0-303.171.5.2.2.el8uek
  • 5.15.0-305.176.4.el8uek
  • 5.15.0-306.177.4.el8uek
  • 5.15.0-306.177.4.1.el8uek
  • 5.15.0-307.178.5.el8uek
  • 5.15.0-308.179.6.el8uek
  • 5.15.0-308.179.6.2.el8uek
  • 5.15.0-308.179.6.3.el8uek
  • 5.15.0-309.180.4.el8uek
  • 5.15.0-308.179.6.7.el8uek
  • 5.15.0-309.180.4.2.el8uek
  • 5.15.0-308.179.6.11.el8uek
  • 5.15.0-310.184.5.2.el8uek
  • 5.15.0-310.184.5.3.el8uek
  • 5.15.0-311.185.9.el8uek
  • 5.15.0-308.179.6.14.el8uek
  • 5.15.0-312.187.5.el8uek
  • 5.15.0-312.187.5.1.el8uek
  • 5.15.0-312.187.5.2.el8uek
  • 5.15.0-312.187.5.3.el8uek
  • 5.15.0-308.179.6.16.el8uek
  • 5.15.0-313.189.5.1.el8uek
  • 5.15.0-313.189.5.2.el8uek
  • 5.15.0-313.189.5.3.el8uek
  • 5.15.0-314.193.5.3.el8uek
  • 5.15.0-314.193.5.4.el8uek
  • 5.15.0-314.193.5.5.el8uek
  • 5.15.0-315.196.5.1.el8uek
  • 5.15.0-315.196.5.2.el8uek
  • 5.15.0-316.196.4.1.el8uek
  • 5.15.0-316.196.4.2.el8uek
  • 5.15.0-317.197.5.1.el8uek
  • 5.15.0-317.197.5.2.el8uek
  • 5.15.0-318.199.3.2.el8uek
  • 5.15.0-318.199.3.2.1.el8uek
  • 5.15.0-319.201.4.2.el8uek
  • 5.15.0-319.201.4.3.el8uek
  • 5.15.0-319.201.4.4.el8uek
  • 5.15.0-319.201.4.6.el8uek
  • 5.15.0-320.202.8.2.el8uek
  • 5.15.0-320.202.8.3.el8uek
  • 5.15.0-320.202.8.4.el8uek
  • 5.15.0-320.202.8.5.el8uek
  • 5.15.0-318.199.3.6.el8uek
  • 5.15.0-321.202.5.el8uek
  • 5.15.0-321.202.5.1.el8uek
  • 5.15.0-321.202.5.2.el8uek
  • 5.15.0-321.202.5.3.el8uek
  • 5.15.0-322.203.3.2.el8uek
  • 5.15.0-322.203.3.3.el8uek
  • 5.15.0-322.203.3.4.el8uek
  • 5.15.0-322.203.3.4.5.el8uek
  • 5.15.0-308.179.6.18.el8uek
  • 5.15.0-318.199.3.7.el8uek
  • 5.15.0-322.203.3.5.el8uek
  • 5.15.0-322.203.3.4.1.el8uek
  • 5.15.0-323.211.3.3.el8uek
  • 5.15.0-323.211.3.4.el8uek
  • 5.15.0-308.179.6.19.el8uek
  • 5.15.0-323.211.3.5.el8uek
Oracle Linux 9 UEK 7 Released
112 kernels
  • 5.15.0-101.103.2.1.el9uek
  • 5.15.0-8.91.4.1.el9uek
  • 5.15.0-7.86.6.1.el9uek
  • 5.15.0-5.76.5.1.el9uek
  • 5.15.0-6.80.3.1.el9uek
  • 5.15.0-3.60.5.1.el9uek
  • 5.15.0-0.30.20.el9uek
  • 5.15.0-100.96.32.el9uek
  • 5.15.0-1.43.4.2.el9uek
  • 5.15.0-2.52.3.el9uek
  • 5.15.0-4.70.5.2.el9uek
  • 5.15.0-1.43.4.1.el9uek
  • 5.15.0-0.30.20.1.el9uek
  • 5.15.0-102.110.5.el9uek
  • 5.15.0-102.110.5.1.el9uek
  • 5.15.0-103.114.4.el9uek
  • 5.15.0-104.119.4.2.el9uek
  • 5.15.0-0.30.19.el9uek
  • 5.15.0-105.125.6.2.el9uek
  • 5.15.0-105.125.6.2.1.el9uek
  • 5.15.0-105.125.6.2.2.el9uek
  • 5.15.0-106.131.4.el9uek
  • 5.15.0-200.131.27.el9uek
  • 5.15.0-200.131.27.1.el9uek
  • 5.15.0-201.135.6.el9uek
  • 5.15.0-202.135.2.el9uek
  • 5.15.0-203.146.5.1.el9uek
  • 5.15.0-204.147.6.2.el9uek
  • 5.15.0-204.147.6.3.el9uek
  • 5.15.0-205.149.5.1.el9uek
  • 5.15.0-205.149.5.4.el9uek
  • 5.15.0-206.153.7.el9uek
  • 5.15.0-206.153.7.1.el9uek
  • 5.15.0-207.156.6.el9uek
  • 5.15.0-208.159.3.el9uek
  • 5.15.0-208.159.3.2.el9uek
  • 5.15.0-209.161.7.el9uek
  • 5.15.0-209.161.7.1.el9uek
  • 5.15.0-209.161.7.2.el9uek
  • 5.15.0-210.163.7.el9uek
  • 5.15.0-300.163.18.el9uek
  • 5.15.0-300.163.18.1.el9uek
  • 5.15.0-300.163.18.1.1.el9uek
  • 5.15.0-301.163.5.2.el9uek
  • 5.15.0-302.167.6.el9uek
  • 5.15.0-300.163.18.7.el9uek
  • 5.15.0-302.167.6.1.el9uek
  • 5.15.0-303.171.5.2.el9uek
  • 5.15.0-303.171.5.2.1.el9uek
  • 5.15.0-304.171.4.el9uek
  • 5.15.0-304.171.4.1.el9uek
  • 5.15.0-304.171.4.3.el9uek
  • 5.15.0-303.171.5.2.2.el9uek
  • 5.15.0-305.176.4.el9uek
  • 5.15.0-306.177.4.el9uek
  • 5.15.0-306.177.4.1.el9uek
  • 5.15.0-307.178.5.el9uek
  • 5.15.0-308.179.6.el9uek
  • 5.15.0-308.179.6.2.el9uek
  • 5.15.0-308.179.6.3.el9uek
  • 5.15.0-309.180.4.el9uek
  • 5.15.0-308.179.6.7.el9uek
  • 5.15.0-309.180.4.2.el9uek
  • 5.15.0-308.179.6.11.el9uek
  • 5.15.0-310.184.5.2.el9uek
  • 5.15.0-310.184.5.3.el9uek
  • 5.15.0-311.185.9.el9uek
  • 5.15.0-308.179.6.14.el9uek
  • 5.15.0-312.187.5.el9uek
  • 5.15.0-312.187.5.1.el9uek
  • 5.15.0-312.187.5.2.el9uek
  • 5.15.0-312.187.5.3.el9uek
  • 5.15.0-308.179.6.16.el9uek
  • 5.15.0-313.189.5.1.el9uek
  • 5.15.0-313.189.5.2.el9uek
  • 5.15.0-313.189.5.3.el9uek
  • 5.15.0-314.193.5.3.el9uek
  • 5.15.0-314.193.5.4.el9uek
  • 5.15.0-314.193.5.5.el9uek
  • 5.15.0-315.196.5.1.el9uek
  • 5.15.0-315.196.5.2.el9uek
  • 5.15.0-316.196.4.1.el9uek
  • 5.15.0-316.196.4.2.el9uek
  • 5.15.0-317.197.5.1.el9uek
  • 5.15.0-317.197.5.2.el9uek
  • 5.15.0-318.199.3.2.el9uek
  • 5.15.0-318.199.3.2.1.el9uek
  • 5.15.0-319.201.4.2.el9uek
  • 5.15.0-319.201.4.3.el9uek
  • 5.15.0-319.201.4.4.el9uek
  • 5.15.0-319.201.4.6.el9uek
  • 5.15.0-320.202.8.2.el9uek
  • 5.15.0-320.202.8.3.el9uek
  • 5.15.0-320.202.8.4.el9uek
  • 5.15.0-320.202.8.5.el9uek
  • 5.15.0-318.199.3.6.el9uek
  • 5.15.0-321.202.5.el9uek
  • 5.15.0-321.202.5.1.el9uek
  • 5.15.0-321.202.5.2.el9uek
  • 5.15.0-321.202.5.3.el9uek
  • 5.15.0-322.203.3.2.el9uek
  • 5.15.0-322.203.3.3.el9uek
  • 5.15.0-322.203.3.4.el9uek
  • 5.15.0-322.203.3.4.5.el9uek
  • 5.15.0-308.179.6.18.el9uek
  • 5.15.0-318.199.3.7.el9uek
  • 5.15.0-322.203.3.5.el9uek
  • 5.15.0-322.203.3.4.1.el9uek
  • 5.15.0-323.211.3.3.el9uek
  • 5.15.0-323.211.3.4.el9uek
  • 5.15.0-308.179.6.19.el9uek
  • 5.15.0-323.211.3.5.el9uek
Ubuntu 22.04 Planned —
Ubuntu 22.04 AWS Planned —
Ubuntu 22.04 Azure Planned —
Ubuntu 24.04 Planned —
Ubuntu 24.04 AWS Planned —
Ubuntu 26.04 Will Not Fix —