In the Linux kernel, the following vulnerability has been...
Moderate severity
Unreviewed
Published
Apr 3, 2024
to the GitHub Advisory Database
•
Updated Jan 7, 2025
Description
Published by the National Vulnerability Database
Apr 3, 2024
Published to the GitHub Advisory Database
Apr 3, 2024
Last updated
Jan 7, 2025
In the Linux kernel, the following vulnerability has been resolved:
aoe: avoid potential deadlock at set_capacity
Move set_capacity() outside of the section procected by (&d->lock).
To avoid possible interrupt unsafe locking scenario:
[1] lock(&bdev->bd_size_lock);
local_irq_disable();
[2] lock(&d->lock);
[3] lock(&bdev->bd_size_lock);
[4] lock(&d->lock);
*** DEADLOCK ***
Where 1 hold by zram_add()->set_capacity().
[2]lock(&d->lock) hold by aoeblk_gdalloc(). And aoeblk_gdalloc()
is trying to acquire 3 at set_capacity() call.
In this situation an attempt to acquire [4]lock(&d->lock) from
aoecmd_cfg_rsp() will lead to deadlock.
So the simplest solution is breaking lock dependency
2 -> 3 by moving set_capacity()
outside.
References