CVE-2023-53270

EUVD-2023-59919
In the Linux kernel, the following vulnerability has been resolved:

ext4: fix i_disksize exceeding i_size problem in paritally written case

It is possible for i_disksize can exceed i_size, triggering a warning.

generic_perform_write
 copied = iov_iter_copy_from_user_atomic(len) // copied < len
 ext4_da_write_end
 | ext4_update_i_disksize
 |  new_i_size = pos + copied;
 |  WRITE_ONCE(EXT4_I(inode)->i_disksize, newsize) // update i_disksize
 | generic_write_end
 |  copied = block_write_end(copied, len) // copied = 0
 |   if (unlikely(copied < len))
 |    if (!PageUptodate(page))
 |     copied = 0;
 |  if (pos + copied > inode->i_size) // return false
 if (unlikely(copied == 0))
  goto again;
 if (unlikely(iov_iter_fault_in_readable(i, bytes))) {
  status = -EFAULT;
  break;
 }

We get i_disksize greater than i_size here, which could trigger WARNING
check 'i_size_read(inode) < EXT4_I(inode)->i_disksize' while doing dio:

ext4_dio_write_iter
 iomap_dio_rw
  __iomap_dio_rw // return err, length is not aligned to 512
 ext4_handle_inode_extension
  WARN_ON_ONCE(i_size_read(inode) < EXT4_I(inode)->i_disksize) // Oops

 WARNING: CPU: 2 PID: 2609 at fs/ext4/file.c:319
 CPU: 2 PID: 2609 Comm: aa Not tainted 6.3.0-rc2
 RIP: 0010:ext4_file_write_iter+0xbc7
 Call Trace:
  vfs_write+0x3b1
  ksys_write+0x77
  do_syscall_64+0x39

Fix it by updating 'copied' value before updating i_disksize just like
ext4_write_inline_data_end() does.

A reproducer can be found in the buganizer link below.
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTPrimary
5.5 MEDIUM
LOCAL
LOW
LOW
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Base Score
CVSS 3.x
EPSS Score
Percentile: 4%
Affected Products (NVD)
VendorProductVersion
linuxlinux_kernel
2.6.27 ≤
𝑥
< 5.15.111
linuxlinux_kernel
5.16 ≤
𝑥
< 6.1.28
linuxlinux_kernel
6.2 ≤
𝑥
< 6.2.15
linuxlinux_kernel
6.3 ≤
𝑥
< 6.3.2
𝑥
= Vulnerable software versions
Debian logo
Debian Releases
Debian Product
Codename
linux
bookworm
6.1.148-1
fixed
bookworm (security)
6.1.147-1
fixed
bullseye
vulnerable
bullseye (security)
vulnerable
forky
6.16.3-1
fixed
sid
6.16.7-1
fixed
trixie
6.12.43-1
fixed
trixie (security)
6.12.41-1
fixed
openSUSE logo
openSUSE / SLES Releases
openSUSE Product
Release
cluster-md-kmp-default
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
dlm-kmp-default
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
gfs2-kmp-default
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
kernel-64kb
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
kernel-default
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
kernel-default-base
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.179.1.150400.24.92.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1.150500.6.59.1
fixed
kernel-default-man
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
kernel-docs
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
kernel-macros
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
kernel-obs-build
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
kernel-source
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
kernel-syms
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
kernel-zfcpdump
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
ocfs2-kmp-default
suse enterprise server 12 SP5
4.12.14-122.275.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
reiserfs-kmp-default
suse enterprise server 15 SP4
5.14.21-150400.24.179.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.124.1
fixed
Red Hat logo
Red Hat Enterprise Linux Releases
Red Hat Product
Release
bpftool
RHEL 9
0:7.3.0-427.13.1.el9_4
fixed
kernel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-debug
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-debug-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-debug-devel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-debug-devel-matched
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-debug-modules
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-debug-modules-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-debug-modules-extra
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-devel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-devel-matched
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-modules
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-modules-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-64k-modules-extra
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-abi-stablelists
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-debug
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-debug-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-debug-devel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-debug-devel-matched
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-debug-modules
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-debug-modules-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-debug-modules-extra
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-debug-uki-virt
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-devel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-devel-matched
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-doc
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-modules
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-modules-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-modules-extra
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-debug
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-debug-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-debug-devel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-debug-kvm
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-debug-modules
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-debug-modules-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-debug-modules-extra
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-devel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-kvm
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-modules
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-modules-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-rt-modules-extra
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-tools
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-tools-libs
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-tools-libs-devel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-uki-virt
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-zfcpdump
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-zfcpdump-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-zfcpdump-devel
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-zfcpdump-devel-matched
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-zfcpdump-modules
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-zfcpdump-modules-core
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
kernel-zfcpdump-modules-extra
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
libperf
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
perf
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
python3-perf
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
rtla
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed
rv
RHEL 9
0:5.14.0-427.13.1.el9_4
fixed