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.

Severity (CVSS 3.1)7.8High
Exploit odds (30 days)0.2%top 86.2% of all CVEs
Exploited in the wildNo reportsCISA SSVC: none
Attack toolingNoneno public tooling known

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

EcosystemPackageFixed inAdvisory
Debian:12linux5.15.3-1DEBIAN-CVE-2021-47483
Debian:13linux5.15.3-1DEBIAN-CVE-2021-47483
Debian:14linux5.15.3-1DEBIAN-CVE-2021-47483
Ubuntu:22.04:LTSlinux-allwinner-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-aws-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-aws-6.2no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-azure-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-azure-6.2no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-azure-fde-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-azure-fde-6.2no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-gcp-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-gcp-6.2no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-hwe-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-hwe-6.2no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-intel-iot-realtimeno fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-lowlatency-hwe-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.2no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-nvidia-6.2no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-oem-5.17no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-oem-6.0no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-oem-6.1no fix listedUBUNTU-CVE-2021-47483
Ubuntu:24.04:LTSlinux-raspi-realtimeno fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-riscv-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-starfive-5.19no fix listedUBUNTU-CVE-2021-47483
Ubuntu:22.04:LTSlinux-starfive-6.2no fix listedUBUNTU-CVE-2021-47483

Affected products (as reported)

VendorProductVersions
Linux Linux 3f4ff561bc88b074d5e868dde4012d89cbb06c87 – before e72dce9afbdbfa70d9b44f5908a50ff6c48589993f4ff561bc88b074d5e868dde4012d89cbb06c87 – before fc081477b47dfc3a6cb50a96087fc29674013fc23f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 758ced2c3878ff789801e6fee808e185c5cf08d63f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 3dae1a4eced3ee733d7222e69b8a55caf2d610913f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 1cead23c1c0bc766dacb900a3b0269f651ad596f3f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 36e911a16b377bde0ad91a8c679069d0d310b1a63f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 50cc1462a668dc62949a1127388bc3af785ce0473f4ff561bc88b074d5e868dde4012d89cbb06c87 – before 55e6d8037805b3400096d621091dfbf713f97e83
Linux Linux 3.12

References