Bug 2301516 (CVE-2024-42149) - CVE-2024-42149 kernel: fs: don't misleadingly warn during thaw operations
Summary: CVE-2024-42149 kernel: fs: don't misleadingly warn during thaw operations
Keywords:
Status: NEW
Alias: CVE-2024-42149
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
low
low
Target Milestone: ---
Assignee: Product Security DevOps Team
QA Contact:
URL:
Whiteboard:
Depends On: 2302016
Blocks:
TreeView+ depends on / blocked
 
Reported: 2024-07-30 08:39 UTC by OSIDB Bzimport
Modified: 2024-09-05 16:51 UTC (History)
4 users (show)

Fixed In Version: kernel 6.9.9, kernel 6.10
Doc Type: If docs needed, set a value
Doc Text:
A flaw was found in the Linux kernel. The block device may be frozen before it is claimed by a filesystem. Concurrently, another process might try to mount that frozen block device and can temporarily claim the block device for that purpose, causing a concurrent fs_bdev_thaw() to end up there. When the mounter sees an elevanted bdev->bd_fsfreeze_count, get_bdev_super() will return NULL. This creates possibility for decreased availability.
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2024-07-30 08:39:35 UTC
In the Linux kernel, the following vulnerability has been resolved:

fs: don't misleadingly warn during thaw operations

The block device may have been frozen before it was claimed by a
filesystem. Concurrently another process might try to mount that
frozen block device and has temporarily claimed the block device for
that purpose causing a concurrent fs_bdev_thaw() to end up here. The
mounter is already about to abort mounting because they still saw an
elevanted bdev->bd_fsfreeze_count so get_bdev_super() will return
NULL in that case.

For example, P1 calls dm_suspend() which calls into bdev_freeze() before
the block device has been claimed by the filesystem. This brings
bdev->bd_fsfreeze_count to 1 and no call into fs_bdev_freeze() is
required.

Now P2 tries to mount that frozen block device. It claims it and checks
bdev->bd_fsfreeze_count. As it's elevated it aborts mounting.

In the meantime P3 called dm_resume(). P3 sees that the block device is
already claimed by a filesystem and calls into fs_bdev_thaw().

P3 takes a passive reference and realizes that the filesystem isn't
ready yet. P3 puts itself to sleep to wait for the filesystem to become
ready.

P2 now puts the last active reference to the filesystem and marks it as
dying. P3 gets woken, sees that the filesystem is dying and
get_bdev_super() fails.

Comment 1 Mauro Matteo Cascella 2024-07-31 10:59:49 UTC
Upstream advisory:
https://lore.kernel.org/linux-cve-announce/2024073033-CVE-2024-42149-c08b@gregkh/T

Comment 2 Mauro Matteo Cascella 2024-07-31 11:00:11 UTC
Created kernel tracking bugs for this issue:

Affects: fedora-all [bug 2302016]


Note You need to log in before you can comment on or make changes to this bug.