Subject: CVE-2024-27034: f2fs: compress: fix to cover normal cluster write with cp_rwsem

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

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

f2fs: compress: fix to cover normal cluster write with cp_rwsem

When we overwrite compressed cluster w/ normal cluster, we should
not unlock cp_rwsem during f2fs_write_raw_pages(), otherwise data
will be corrupted if partial blocks were persisted before CP & SPOR,
due to cluster metadata wasn't updated atomically.

The Linux kernel CVE team has assigned CVE-2024-27034 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 5.6 with commit 4c8ff7095bef and fixed in 5.15.153 with commit 7d420eaaa18e
	Issue introduced in 5.6 with commit 4c8ff7095bef and fixed in 6.1.83 with commit 542c8b3c774a
	Issue introduced in 5.6 with commit 4c8ff7095bef and fixed in 6.6.23 with commit 75abfd61392b
	Issue introduced in 5.6 with commit 4c8ff7095bef and fixed in 6.7.11 with commit 2b1b14d9fc94
	Issue introduced in 5.6 with commit 4c8ff7095bef and fixed in 6.8.2 with commit 52982edfcefd
	Issue introduced in 5.6 with commit 4c8ff7095bef and fixed in 6.9 with commit fd244524c2cf

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2024-27034
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	fs/f2fs/compress.c
	fs/f2fs/data.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/7d420eaaa18ec8e2bb4eeab8c65c00492ef6f416
	https://git.kernel.org/stable/c/542c8b3c774a480bfd0804291a12f6f2391b0cd1
	https://git.kernel.org/stable/c/75abfd61392b1db391bde6d738a30d685b843286
	https://git.kernel.org/stable/c/2b1b14d9fc94b8feae20808684c8af28ec80f45b
	https://git.kernel.org/stable/c/52982edfcefd475cc34af663d5c47c0cddaa5739
	https://git.kernel.org/stable/c/fd244524c2cf07b5f4c3fe8abd6a99225c76544b