ata: ahci: fail probe if BAR too small for claimed ports
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.111, and 1 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: ata: ahci: fail probe if BAR too small for claimed ports When an AHCI controller is disabled in BIOS, its HOST_CAP register may contain a bogus value, e.g. 0xFFFFFFFF. Since CAP.NP (Number of Ports) is a zeroes based 5-bit register field, a value of 0x1f means 32 ports. If CAP.NP claims more ports than can physically fit within the mapped BAR region, accessing port registers beyond the BAR boundary causes a kernel panic. Add validation in ahci_init_one() to check that the BAR size is sufficient for the number of ports claimed in CAP.NP. The check calculates the required MMIO size as: required_size = 0x100 (global registers) + max_ports * 0x80 If required_size exceeds the actual BAR size, the probe fails with -ENODEV, preventing the panic and providing a clear error message. [cassel: commit log]
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 533a08ea11217100cec7a0ed903cb9b9c892d6f1; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in c717b20100ef8cd06b5237af70ea2cb692e058ce; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in ff0ab535f8febbd32afa5832f8d2d9b06a8d5060; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 6d29b91164424256a759ddabc8f2de1ae09bd3f1; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in df262c828b616450eb351349e91c63447551bd01; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in f2e291043c37a896d7f9797e25a356dceb030177; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in c4086c6e1af757e1ff26fa2d2926b3ec0195de79
- Linux Linux
2.6.12
- KernelLinux
From 2.6.12 · fixed in 5.10.271; From 5.11.0 · fixed in 5.15.222; From 5.16.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53
References 7
git.kernel.org
- stable/c/533a08ea11217100cec7a0ed903cb9b9c892d6f1
- stable/c/c717b20100ef8cd06b5237af70ea2cb692e058ce
- stable/c/ff0ab535f8febbd32afa5832f8d2d9b06a8d5060
- stable/c/6d29b91164424256a759ddabc8f2de1ae09bd3f1
- stable/c/df262c828b616450eb351349e91c63447551bd01
- stable/c/f2e291043c37a896d7f9797e25a356dceb030177
- stable/c/c4086c6e1af757e1ff26fa2d2926b3ec0195de79