---
id: CVE-2022-49352
title: 'ext4: fix warning in ext4_handle_inode_extension'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ext4: fix warning in ext4_handle_inode_extension

  We got issue as follows:
  EXT4-fs error (device loop0) in ext4_reserve_inode_write:5741: Out of memory
  EXT4-fs error (d…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 <
    adf490083ca52ebfb0b2fe64ff1ead00c0452dd7
  - >-
    Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 <
    b81d2ff6885e38fc745eeaf9565775055778fc0b
  - >-
    Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 <
    e383c2aa5f02ab571530dc5c5696479672478c25
  - >-
    Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 <
    1bcce88da60eccc946c0f4ed942b0f08cd565778
  - >-
    Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 <
    f4534c9fc94d22383f187b9409abb3f9df2e3db3
  - Linux 5.5
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-11-05T19:45:19.317368Z'
published: '2025-02-26'
updated: '2026-11-05'
sourceUpdated: '2026-11-05T19:49:39.042Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2022-49352'
references:
  - url: 'https://git.kernel.org/stable/c/adf490083ca52ebfb0b2fe64ff1ead00c0452dd7'
  - url: 'https://git.kernel.org/stable/c/b81d2ff6885e38fc745eeaf9565775055778fc0b'
  - url: 'https://git.kernel.org/stable/c/e383c2aa5f02ab571530dc5c5696479672478c25'
  - url: 'https://git.kernel.org/stable/c/1bcce88da60eccc946c0f4ed942b0f08cd565778'
  - url: 'https://git.kernel.org/stable/c/f4534c9fc94d22383f187b9409abb3f9df2e3db3'
tags:
  - cve.org
epss: 0.00281
epssPercentile: 0.20701
ingestedAt: '2026-11-05T22:38:31.572Z'
---

## Overview

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

ext4: fix warning in ext4_handle_inode_extension

We got issue as follows:
EXT4-fs error (device loop0) in ext4_reserve_inode_write:5741: Out of memory
EXT4-fs error (device loop0): ext4_setattr:5462: inode #13: comm syz-executor.0: mark_inode_dirty error
EXT4-fs error (device loop0) in ext4_setattr:5519: Out of memory
EXT4-fs error (device loop0): ext4_ind_map_blocks:595: inode #13: comm syz-executor.0: Can't allocate blocks for non-extent mapped inodes with bigalloc
------------[ cut here ]------------
WARNING: CPU: 1 PID: 4361 at fs/ext4/file.c:301 ext4_file_write_iter+0x11c9/0x1220
Modules linked in:
CPU: 1 PID: 4361 Comm: syz-executor.0 Not tainted 5.10.0+ #1
RIP: 0010:ext4_file_write_iter+0x11c9/0x1220
RSP: 0018:ffff924d80b27c00 EFLAGS: 00010282
RAX: ffffffff815a3379 RBX: 0000000000000000 RCX: 000000003b000000
RDX: ffff924d81601000 RSI: 00000000000009cc RDI: 00000000000009cd
RBP: 000000000000000d R08: ffffffffbc5a2c6b R09: 0000902e0e52a96f
R10: ffff902e2b7c1b40 R11: ffff902e2b7c1b40 R12: 000000000000000a
R13: 0000000000000001 R14: ffff902e0e52aa10 R15: ffffffffffffff8b
FS:  00007f81a7f65700(0000) GS:ffff902e3bc80000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffffffff600400 CR3: 000000012db88001 CR4: 00000000003706e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 do_iter_readv_writev+0x2e5/0x360
 do_iter_write+0x112/0x4c0
 do_pwritev+0x1e5/0x390
 __x64_sys_pwritev2+0x7e/0xa0
 do_syscall_64+0x37/0x50
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

Above issue may happen as follows:
Assume
inode.i_size=4096
EXT4_I(inode)->i_disksize=4096

step 1: set inode->i_isize = 8192
ext4_setattr
  if (attr->ia_size != inode->i_size)
    EXT4_I(inode)->i_disksize = attr->ia_size;
    rc = ext4_mark_inode_dirty
       ext4_reserve_inode_write
          ext4_get_inode_loc
            __ext4_get_inode_loc
              sb_getblk --> return -ENOMEM
   ...
   if (!error)  ->will not update i_size
     i_size_write(inode, attr->ia_size);
Now:
inode.i_size=4096
EXT4_I(inode)->i_disksize=8192

step 2: Direct write 4096 bytes
ext4_file_write_iter
 ext4_dio_write_iter
   iomap_dio_rw ->return error
 if (extend)
   ext4_handle_inode_extension
     WARN_ON_ONCE(i_size_read(inode) < EXT4_I(inode)->i_disksize);
->Then trigger warning.

To solve above issue, if mark inode dirty failed in ext4_setattr just
set 'EXT4_I(inode)->i_disksize' with old value.

## Affected

- `Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 < adf490083ca52ebfb0b2fe64ff1ead00c0452dd7`
- `Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 < b81d2ff6885e38fc745eeaf9565775055778fc0b`
- `Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 < e383c2aa5f02ab571530dc5c5696479672478c25`
- `Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 < 1bcce88da60eccc946c0f4ed942b0f08cd565778`
- `Linux >= b1b4705d54abedfd69dcdf42779c521aa1e0fbd3 < f4534c9fc94d22383f187b9409abb3f9df2e3db3`
- `Linux 5.5`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
