CVE-2025-38682 i2c: core: Fix double-free of fwnode in i2c_unregister_device()

High 7.8 Published Updated

A double-free vulnerability in the Linux kernel's I2C subsystem allows attackers to cause a use-after-free, potentially leading to system crashes or arbitrary code execution.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Local or same network only
Victim action needed
Not needed
Fix
Available

What is CVE-2025-38682?

CVE-2025-38682 is a high-severity use after free vulnerability in Linux kernel, published on 4 Sep 2025. It can only be exploited from the same machine or local network, with no action from the victim.

Official description

In the Linux kernel, the following vulnerability has been resolved:

i2c: core: Fix double-free of fwnode in i2c_unregister_device()

Before commit df6d7277e552 ("i2c: core: Do not dereference fwnode in struct device"), i2c_unregister_device() only called fwnode_handle_put() on of_node-s in the form of calling of_node_put(client->dev.of_node).

But after this commit the i2c_client's fwnode now unconditionally gets fwnode_handle_put() on it.

When the i2c_client has no primary (ACPI / OF) fwnode but it does have a software fwnode, the software-node will be the primary node and fwnode_handle_put() will put() it.

But for the software fwnode device_remove_software_node() will also put() it leading to a double free:

[ 82.665598] ------------[ cut here ]------------ [ 82.665609] refcount_t: underflow; use-after-free. [ 82.665808] WARNING: CPU: 3 PID: 1502 at lib/refcount.c:28 refcount_warn_saturate+0xba/0x11 ... [ 82.666830] RIP: 0010:refcount_warn_saturate+0xba/0x110 ... [ 82.666962] <TASK> [ 82.666971] i2c_unregister_device+0x60/0x90

Fix this by not calling fwnode_handle_put() when the primary fwnode is a software-node.

Weakness: CWE-415

Which versions are affected by CVE-2025-38682?

It affects 1 product.

Products include Linux kernel.

How do I fix CVE-2025-38682?

Apply the vendor's patch.

Upgrade to the fixed version. These bugs are found with fuzzing and sanitisers and avoided by memory-safe languages. More about Use after free.

Is CVE-2025-38682 being exploited?

There is no known exploitation of CVE-2025-38682 in the wild and no public exploit code.

All Linux kernel vulnerabilities

Sources

Also known as BELL-CVE-2025-38682, GHSA-w6pp-p9r9-cvm4, UBUNTU-CVE-2025-38682.

Is CVE-2025-38682 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free