Vulnerability · Published May 22, 2024 · Assigned by Linux
CVE-2021-47483regmap: Fix possible double-free in regcache_rbtree_exit()
High 7.8
In plain English
A high-severity security flaw in Linux from Linux. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.2% (higher than 14% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.
Official description
In the Linux kernel, the following vulnerability has been resolved: regmap: Fix possible double-free in regcache_rbtree_exit() In regcache_rbtree_insert_to_block(), when 'present' realloc failed, the 'blk' which is supposed to assign to 'rbnode->block' will be freed, so 'rbnode->block' points a freed memory, in the error handling path of regcache_rbtree_init(), 'rbnode->block' will be freed again in regcache_rbtree_exit(), KASAN will report double-free as follows: BUG: KASAN: double-free or invalid-free in kfree+0xce/0x390 Call Trace: slab_free_freelist_hook+0x10d/0x240 kfree+0xce/0x390 regcache_rbtree_exit+0x15d/0x1a0 regcache_rbtree_init+0x224/0x2c0 regcache_init+0x88d/0x1310 __regmap_init+0x3151/0x4a80 __devm_regmap_init+0x7d/0x100 madera_spi_probe+0x10f/0x333 [madera_spi] spi_probe+0x183/0x210 really_probe+0x285/0xc30 To fix this, moving up the assignment of rbnode->block to immediately after the reallocation has succeeded so that the data structure stays valid even if the second reallocation fails.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian:12 | linux | 5.15.3-1 | DEBIAN-CVE-2021-47483 |
| Debian:13 | linux | 5.15.3-1 | DEBIAN-CVE-2021-47483 |
| Debian:14 | linux | 5.15.3-1 | DEBIAN-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-allwinner-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-aws-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-aws-6.2 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-azure-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-azure-6.2 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-azure-fde-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-azure-fde-6.2 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-gcp-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-gcp-6.2 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-hwe-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-hwe-6.2 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-intel-iot-realtime | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-lowlatency-hwe-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-lowlatency-hwe-6.2 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-nvidia-6.2 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-oem-5.17 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-oem-6.0 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-oem-6.1 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:24.04:LTS | linux-raspi-realtime | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-realtime | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-riscv | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-riscv-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-starfive-5.19 | no fix listed | UBUNTU-CVE-2021-47483 |
| Ubuntu:22.04:LTS | linux-starfive-6.2 | no fix listed | UBUNTU-CVE-2021-47483 |
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| Linux | Linux | 3f4ff561bc88b074d5e868dde4012d89cbb06c87 – before e72dce9afbdbfa70d9b44f5908a50ff6c48589993f4ff561bc88b074d5e868dde4012d89cbb06c87 – before fc081477b47dfc3a6cb50a96087fc29674013fc23f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 758ced2c3878ff789801e6fee808e185c5cf08d63f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 3dae1a4eced3ee733d7222e69b8a55caf2d610913f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 1cead23c1c0bc766dacb900a3b0269f651ad596f3f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 36e911a16b377bde0ad91a8c679069d0d310b1a63f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 50cc1462a668dc62949a1127388bc3af785ce0473f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 55e6d8037805b3400096d621091dfbf713f97e83 |
| Linux | Linux | 3.12 |
References
- https://git.kernel.org/stable/c/e72dce9afbdbfa70d9b44f5908a50ff6c4858999
- https://git.kernel.org/stable/c/fc081477b47dfc3a6cb50a96087fc29674013fc2
- https://git.kernel.org/stable/c/758ced2c3878ff789801e6fee808e185c5cf08d6
- https://git.kernel.org/stable/c/3dae1a4eced3ee733d7222e69b8a55caf2d61091
- https://git.kernel.org/stable/c/1cead23c1c0bc766dacb900a3b0269f651ad596f
- https://git.kernel.org/stable/c/36e911a16b377bde0ad91a8c679069d0d310b1a6
- https://git.kernel.org/stable/c/50cc1462a668dc62949a1127388bc3af785ce047
- https://git.kernel.org/stable/c/55e6d8037805b3400096d621091dfbf713f97e83