CVE-2024-58042

rhashtable: Fix potential deadlock by moving schedule_work outside lock

Medium · published February 27, 2025

CVSS v3.1
5.5
EPSS
0%
Percentile
5.7
In the wild
Unconfirmed
What it is

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

rhashtable: Fix potential deadlock by moving schedule_work outside lock

Move the hash table growth check and work scheduling outside the

rht lock to prevent a possible circular locking dependency.

The original implementation could trigger a lockdep warning due to

a potential deadlock scenario involving nested locks between

rhashtable bucket, rq lock, and dsq lock. By relocating the

growth check and work scheduling after releasing the rth lock, we break

this potential deadlock chain.

This change expands the flexibility of rhashtable by removing

restrictive locking that previously limited its use in scheduler

and workqueue contexts.

Import to say that this calls rht_grow_above_75(), which reads from

struct rhashtable without holding the lock, if this is a problem, we can

move the check to the lock, and schedule the workqueue after the lock.

Modified so that atomic_inc is also moved outside of the bucket

lock along with the growth above 75% check.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00167 · 5.7th percentile
Published
2025-02-27T20:00Z
EPSS history
Timeline
  • 27 FEB 20:00Z
    rhashtable: Fix potential deadlock by moving schedule_work outside lock
    cvelistv5