CVE-2026-31467 PUBLISHED

erofs: add GFP_NOIO in the bio completion if needed

Assigner: Linux
Reserved: 09.03.2026 Published: 22.04.2026 Updated: 22.04.2026

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

erofs: add GFP_NOIO in the bio completion if needed

The bio completion path in the process context (e.g. dm-verity) will directly call into decompression rather than trigger another workqueue context for minimal scheduling latencies, which can then call vm_map_ram() with GFP_KERNEL.

Due to insufficient memory, vm_map_ram() may generate memory swapping I/O, which can cause submit_bio_wait to deadlock in some scenarios.

Trimmed down the call stack, as follows:

f2fs_submit_read_io submit_bio //bio_list is initialized. mmc_blk_mq_recovery z_erofs_endio vm_map_ram __pte_alloc_kernel __alloc_pages_direct_reclaim shrink_folio_list __swap_writepage submit_bio_wait //bio_list is non-NULL, hang!!!

Use memalloc_noio_{save,restore}() to wrap up this path.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to d6565ea662e17d45a577184b0011bd69de22dc2b (excl.)
  • affected from 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to d9d8360cb66e3b599d89d2526e7da8b530ebf2ff (excl.)
  • affected from 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to 5c8ecdcfbfb0b0c6a82a4ebadc1ddea61609b902 (excl.)
  • affected from 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to 378949f46e897204384f3f5f91e42e93e3f87568 (excl.)
  • affected from 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to da40464064599eefe78749f75cd2bba371044c04 (excl.)
  • affected from 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to e83e20b82859f0588e9a52a6fa9fea704a2061cf (excl.)
  • affected from 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to c23df30915f83e7257c8625b690a1cece94142a0 (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • unaffected from 5.15.203 to 5.15.* (incl.)
  • unaffected from 6.1.168 to 6.1.* (incl.)
  • unaffected from 6.6.131 to 6.6.* (incl.)
  • unaffected from 6.12.80 to 6.12.* (incl.)
  • unaffected from 6.18.21 to 6.18.* (incl.)
  • unaffected from 6.19.11 to 6.19.* (incl.)
  • unaffected from 7.0 to * (incl.)

References