CVE-2022-49149: rxrpc: Fix call timer start racing with call destruction

Published Feb 26, 2025
·
Updated

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

rxrpc: Fix call timer start racing with call destruction

The rxrpccall struct has a timer used to handle various timed events relating to a call. This timer can get started from the packet input routines that are run in softirq mode with just the RCU read lock held. Unfortunately, because only the RCU read lock is held - and neither ref or other lock is taken - the call can start getting destroyed at the same time a packet comes in addressed to that call. This causes the timer - which was already stopped - to get restarted. Later, the timer dispatch code may then oops if the timer got deallocated first.

Fix this by trying to take a ref on the rxrpccall struct and, if successful, passing that ref along to the timer. If the timer was already running, the ref is discarded.

The timer completion routine can then pass the ref along to the call's work item when it queues it. If the timer or work item where already queued/running, the extra ref is discarded.

Affected Software

14 affected components
Linux Linux kernel
Linux Linux kernel>=4.15.1<5.10.110
Linux Linux kernel>=5.11<5.15.33
Linux Linux kernel>=5.16<5.16.19
Linux Linux kernel>=5.17<5.17.2
Linux Linux kernel=4.15
Linux Linux kernel=4.15-rc2
Linux Linux kernel=4.15-rc3
Linux Linux kernel=4.15-rc4
Linux Linux kernel=4.15-rc5
Linux Linux kernel=4.15-rc6
Linux Linux kernel=4.15-rc7
Linux Linux kernel=4.15-rc8
Linux Linux kernel=4.15-rc9

Event History

Feb 26, 2025
CVE Published
via MITRE·01:55 AM
Data Sourced
via MITRE·01:55 AM
DescriptionSeverity
Data Sourced
via NVD·07:00 AM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What conditions are required for this issue to occur?

The race requires an incoming packet addressed to an RXRPC call while that call is being destroyed. Packet input runs in softirq context with only an RCU read lock, allowing a stopped call timer to be restarted concurrently with teardown.

2

What is the likely impact if the race is triggered?

The timer dispatch code may oops if the timer is restarted and later executes after its associated state has been deallocated. This can cause a kernel crash.

3

How does the fix prevent the race?

The fix attempts to acquire a reference to the rxrpc_call before starting its timer and transfers that reference through the timer and queued work item. References are discarded when the timer or work is already queued or running, preventing the call from being freed while those operations still use it.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203