# CVE-2023-54259: soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow

> A local attacker can cause a usage count underflow in the Linux kernel soundwire bus, leading to a denial of service.

- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Local or same network only
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 30 Dec 2025
- **Updated:** 11 May 2026
- **Also known as:** BELL-CVE-2023-54259, DEBIAN-CVE-2023-54259, GHSA-qq6g-5658-hpx2, ROOT-OS-UBUNTU-2204-CVE-2023-54259, UBUNTU-CVE-2023-54259

## What is CVE-2023-54259?

CVE-2023-54259 is a denial of service vulnerability in Linux, published on 30 Dec 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:

soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow

This reverts commit
443a98e649b4 ("soundwire: bus: use pm_runtime_resume_and_get()")

Change calls to pm_runtime_resume_and_get() back to pm_runtime_get_sync().
This fixes a usage count underrun caused by doing a pm_runtime_put() even
though pm_runtime_resume_and_get() returned an error.

The three affected functions ignore -EACCES error from trying to get
pm_runtime, and carry on, including a put at the end of the function.
But pm_runtime_resume_and_get() does not increment the usage count if it
returns an error. So in the -EACCES case you must not call
pm_runtime_put().

The documentation for pm_runtime_get_sync() says:
 "Consider using pm_runtime_resume_and_get() ...  as this is likely to
 result in cleaner code."

In this case I don't think it results in cleaner code because the
pm_runtime_put() at the end of the function would have to be conditional on
the return value from pm_runtime_resume_and_get() at the top of the
function.

pm_runtime_get_sync() doesn't have this problem because it always
increments the count, so always needs a put. The code can just flow through
and do the pm_runtime_put() unconditionally.

## Which versions are affected by CVE-2023-54259?


## How do I fix CVE-2023-54259?

Apply the vendor's patch.

## Is CVE-2023-54259 being exploited?

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

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2023-54259 and fix it if it is affected.

What it is: CVE-2023-54259 is a denial of service vulnerability in Linux, published on 30 Dec 2025. It can only be exploited from the same machine or local network, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2023-54259 in the wild and no public exploit code.

Affected product: Linux. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2023-54259/ (Markdown: https://insights.sbomify.com/CVE-2023-54259/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2023-54259
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2023-54259
- OSV: https://osv.dev/vulnerability/CVE-2023-54259

---
From sbomify Insights: https://insights.sbomify.com/CVE-2023-54259/
Summaries are generated and may contain mistakes; the official description above is the record.
