Subject: CVE-2024-45026: s390/dasd: fix error recovery leading to data corruption on ESE devices

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

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

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

s390/dasd: fix error recovery leading to data corruption on ESE devices

Extent Space Efficient (ESE) or thin provisioned volumes need to be
formatted on demand during usual IO processing.

The dasd_ese_needs_format function checks for error codes that signal
the non existence of a proper track format.

The check for incorrect length is to imprecise since other error cases
leading to transport of insufficient data also have this flag set.
This might lead to data corruption in certain error cases for example
during a storage server warmstart.

Fix by removing the check for incorrect length and replacing by
explicitly checking for invalid track format in transport mode.

Also remove the check for file protected since this is not a valid
ESE handling case.

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

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

	Issue introduced in 5.3 with commit 5e2b17e712cf and fixed in 5.4.283 with commit 19f60a55b2fd
	Issue introduced in 5.3 with commit 5e2b17e712cf and fixed in 5.10.225 with commit e245a18281c2
	Issue introduced in 5.3 with commit 5e2b17e712cf and fixed in 5.15.166 with commit a665e3b7ac7d
	Issue introduced in 5.3 with commit 5e2b17e712cf and fixed in 6.1.107 with commit 0a228896a1b3
	Issue introduced in 5.3 with commit 5e2b17e712cf and fixed in 6.6.48 with commit 93a7e2856951
	Issue introduced in 5.3 with commit 5e2b17e712cf and fixed in 6.10.7 with commit 5d4a304338da
	Issue introduced in 5.3 with commit 5e2b17e712cf and fixed in 6.11 with commit 7db404233658

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-45026
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:
	drivers/s390/block/dasd.c
	drivers/s390/block/dasd_3990_erp.c
	drivers/s390/block/dasd_eckd.c
	drivers/s390/block/dasd_int.h

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/19f60a55b2fda49bc4f6134a5f6356ef62ee69d8
	https://git.kernel.org/stable/c/e245a18281c252c8dbc467492e09bb5d4b012118
	https://git.kernel.org/stable/c/a665e3b7ac7d5cdc26e00e3d0fc8fd490e00316a
	https://git.kernel.org/stable/c/0a228896a1b3654cd461ff654f6a64e97a9c3246
	https://git.kernel.org/stable/c/93a7e2856951680cd7fe6ebd705ac10c8a8a5efd
	https://git.kernel.org/stable/c/5d4a304338daf83ace2887aaacafd66fe99ed5cc
	https://git.kernel.org/stable/c/7db4042336580dfd75cb5faa82c12cd51098c90b