From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 57EB33DEAE3 for ; Wed, 27 May 2026 12:22:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779884523; cv=none; b=u/2hdg1ni2h4h7uhg6EmXI3bQ55E00TseO/CRNwPBIzRCPO+jJLbn3s4/C0Jd0Ni73BOwSEYkBkk1QronW7tTNwu3CdvGbMsTMkwIHZ5EQJk8LQsE8CX+URsq0Piemgv/hzvNn2pTFp+PrP2Jdw2ZsNNJP/cbOsa4+x3lpwyrOY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779884523; c=relaxed/simple; bh=i88fwklKgDr0ImkwTYUw+jfPHW1xbuN5rX+tlwrVx3o=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=boNM2XxfTvObI7oqS3pqXE+7kzN6CWRwQeBYldwsAV9R8Nw1WYO1ATyweOs05gEL4yJzKi6l5ySwY9kf7CtION4FZoA4IsyRLyCLi3uAlWJV4mh/7QzWXA1lAtNeJUEIgkTVAdh8AHJi9wCN2TB+ECPNbmjSekGq7wfkih7g070= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=m8qBpoxn; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="m8qBpoxn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AB9201F000E9; Wed, 27 May 2026 12:22:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1779884522; bh=MjaWa8N9j0rRGmSY9UUPIYIvCKGoAIBhoyPVHwd0MOk=; h=From:To:Cc:Subject:Date:Reply-To; b=m8qBpoxnBrw0VdeKFl4KcPOB3mMmuhhLZfNmG/pazCs1v6FK0ybETxj1XIdUBTctQ 4xLJzfjrefXpUjFiKlYyEQrmTVf3tXkqJJCO8fNXB3uhrtKtFKQbrAY9Z2UX4F62CG ZgHDkM+Q7WQYXB0FsMAJSot6qcxKXAWovM4Uh41I= From: Greg Kroah-Hartman To: linux-cve-announce@vger.kernel.org Cc: Greg Kroah-Hartman Subject: CVE-2026-45858: ext4: don't zero the entire extent if EXT4_EXT_DATA_PARTIAL_VALID1 Date: Wed, 27 May 2026 14:18:20 +0200 Message-ID: <2026052710-CVE-2026-45858-54e5@gregkh> X-Mailer: git-send-email 2.54.0 Reply-To: , Precedence: bulk X-Mailing-List: linux-cve-announce@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3614; i=gregkh@linuxfoundation.org; h=from:subject:message-id; bh=6+ScBczSQlnYqy+tb1aaqeyAR/aFn2VnwbIRPrchErs=; b=owGbwMvMwCRo6H6F97bub03G02pJDFliD5lcvzfvV4xTzea2+buo9K9Mus/32Y/uhhdq6D1rv HZ63gPxjlgWBkEmBlkxRZYv23iO7q84pOhlaHsaZg4rE8gQBi5OAZhIdxPDgo1SHj6yahn3QnVd 1hUd33JPsj+6mmF+EsfkTdsXLTkvWTe36JrixJ5b1od9AA== X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 Content-Transfer-Encoding: 8bit From: Greg Kroah-Hartman Description =========== In the Linux kernel, the following vulnerability has been resolved: ext4: don't zero the entire extent if EXT4_EXT_DATA_PARTIAL_VALID1 When allocating initialized blocks from a large unwritten extent, or when splitting an unwritten extent during end I/O and converting it to initialized, there is currently a potential issue of stale data if the extent needs to be split in the middle. 0 A B N [UUUUUUUUUUUU] U: unwritten extent [--DDDDDDDD--] D: valid data |<- ->| ----> this range needs to be initialized ext4_split_extent() first try to split this extent at B with EXT4_EXT_DATA_ENTIRE_VALID1 and EXT4_EXT_MAY_ZEROOUT flag set, but ext4_split_extent_at() failed to split this extent due to temporary lack of space. It zeroout B to N and mark the entire extent from 0 to N as written. 0 A B N [WWWWWWWWWWWW] W: written extent [SSDDDDDDDDZZ] Z: zeroed, S: stale data ext4_split_extent() then try to split this extent at A with EXT4_EXT_DATA_VALID2 flag set. This time, it split successfully and left a stale written extent from 0 to A. 0 A B N [WW|WWWWWWWWWW] [SS|DDDDDDDDZZ] Fix this by pass EXT4_EXT_DATA_PARTIAL_VALID1 to ext4_split_extent_at() when splitting at B, don't convert the entire extent to written and left it as unwritten after zeroing out B to N. The remaining work is just like the standard two-part split. ext4_split_extent() will pass the EXT4_EXT_DATA_VALID2 flag when it calls ext4_split_extent_at() for the second time, allowing it to properly handle the split. If the split is successful, it will keep extent from 0 to A as unwritten. The Linux kernel CVE team has assigned CVE-2026-45858 to this issue. Affected and fixed versions =========================== Fixed in 6.6.130 with commit 58ddae5d77b1db3a27b891c75a8fa120239ac092 Fixed in 6.12.75 with commit d17857b4fb9ba5745b59be0ef38fd532991fccbf Fixed in 6.18.14 with commit d67c8ecf3d8fda9b8ef80e6f665d84b6d6ac9d88 Fixed in 6.19.4 with commit 7015fcf473796e1d2d876f241bd9e0c36f3d4eef Fixed in 7.0 with commit 1bf6974822d1dba86cf11b5f05498581cf3488a2 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-2026-45858 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/ext4/extents.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/58ddae5d77b1db3a27b891c75a8fa120239ac092 https://git.kernel.org/stable/c/d17857b4fb9ba5745b59be0ef38fd532991fccbf https://git.kernel.org/stable/c/d67c8ecf3d8fda9b8ef80e6f665d84b6d6ac9d88 https://git.kernel.org/stable/c/7015fcf473796e1d2d876f241bd9e0c36f3d4eef https://git.kernel.org/stable/c/1bf6974822d1dba86cf11b5f05498581cf3488a2