CVE-2024-40910

ax25: Fix refcount imbalance on inbound connections

MEDIUM
5.5
CVSS Score
Published: July 12, 2024 at 12:20 PM UTC
Updated: August 5, 2026 at 12:04 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.4%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: ax25: Fix refcount imbalance on inbound connections When releasing a socket in ax25_release(), we call netdev_put() to decrease the refcount on the associated ax.25 device. However, the execution path for accepting an incoming connection never calls netdev_hold(). This imbalance leads to refcount errors, and ultimately to kernel crashes. A typical call trace for the above situation will start with one of the following errors: refcount_t: decrement hit 0; leaking memory. refcount_t: underflow; use-after-free. And will then have a trace like: Call Trace: <TASK> ? show_regs+0x64/0x70 ? __warn+0x83/0x120 ? refcount_warn_saturate+0xb2/0x100 ? report_bug+0x158/0x190 ? prb_read_valid+0x20/0x30 ? handle_bug+0x3e/0x70 ? exc_invalid_op+0x1c/0x70 ? asm_exc_invalid_op+0x1f/0x30 ? refcount_warn_saturate+0xb2/0x100 ? refcount_warn_saturate+0xb2/0x100 ax25_release+0x2ad/0x360 __sock_release+0x35/0xa0 sock_close+0x19/0x20 [...] On reboot (or any attempt to remove the interface), the kernel gets stuck in an infinite loop: unregister_netdevice: waiting for ax0 to become free. Usage count = 0 This patch corrects these issues by ensuring that we call netdev_hold() and ax25_dev_hold() for new connections in ax25_accept(). This makes the logic leading to ax25_accept() match the logic for ax25_bind(): in both cases we increment the refcount, which is ultimately decremented in ax25_release().

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v ≥ 4.14.277v ≥ 4.19.240v ≥ 5.10.112v ≥ 5.15.35v ≥ 5.17.2v ≥ 5.4.1904.14.277 ≤ v < 4.154.19.240 ≤ v < 4.205.10.112 ≤ v < 5.115.15.35 ≤ v < 5.165.17.2 ≤ v < 5.185.18 ≤ v < 6.1.955.18 ≤ v < 6.105.18 ≤ v < 6.6.355.18 ≤ v < 6.9.65.4.190 ≤ v < 5.56.2 ≤ v < 6.6.356.7 ≤ v < 6.9.64.14.2774.19.240452ae92b99062d2f6a34324eaf705a3b7eac9f8b5.10.1125.15.355.17.25.4.190534156dd4ed768e30a43de0036f45dca7c54818f6.10 rc16.10 rc29e1e088a57c23251f1cfe9601bbd90ade2ea73b99fd75b66b8f68498454d685dc4ba13192ae069b0b20a5ab0f5fb175750c6bafd4cf12daccf00c738c44a453ffe16eb08acdc6129ac4fa0192dbc0456de55a1338e6a48ff1e41ea8db1432496fbe2a62b
Vendor states this is fixed in 3c34fb0bd4a4237592c5ecb5b2e2531900c55774 (fixed)
Vendor states this is fixed in 52100fd74ad07b53a4666feafff1cd11436362d3 (fixed)
Vendor states this is fixed in a723a6c8d4831cc8e2c7b0c9f3f0c010d4671964 (fixed)
Vendor states this is fixed in f4df9d6c8d4e4c818252b0419c2165d66eabd4eb (fixed)
Affected range stops below 4.15, so it looks safe — our inference, not a vendor statement
Affected range stops below 4.20, so it looks safe — our inference, not a vendor statement
Affected range stops below 5.11, so it looks safe — our inference, not a vendor statement
Affected range stops below 5.16, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 5.18 (unaffected)
Affected range stops below 5.5, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.1.95 (unaffected)
Vendor states this is fixed in 6.10 (unaffected)
Vendor states this is fixed in 6.6.35 (unaffected)
Vendor states this is fixed in 6.9.6 (unaffected)

References (5)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/3c34fb0bd4a4237592c5ecb5b2e2531900c55774
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/52100fd74ad07b53a4666feafff1cd11436362d3
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/a723a6c8d4831cc8e2c7b0c9f3f0c010d4671964
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/f4df9d6c8d4e4c818252b0419c2165d66eabd4eb
Source: af854a3a-2127-422b-91ae-364da2661108
https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
NVD-CWE-Other

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card