CVE-2026-80788

Summary

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

nvmet-tcp: Do not WARN on remotely-controlled oversized SGL allocations

When fuzzing the nvme target code, I tripped a kernel warning in nvmet_tcp_map_data() because the length passed into the allocator is controlled by the remote initiator.

A remote initiator that sends a command with an SGL claiming a huge number, can create a scatterlist and iovec allocation of over 1 million entries, which causes the backing kmalloc call to exceed MAX_PAGE_ORDER and then the page allocator will trip on a WARN_ON_ONCE_GFP() message:

WARNING: mm/page_alloc.c:5280 __alloc_frozen_pages_noprof Workqueue: nvmet_tcp_wq nvmet_tcp_io_work … sgl_alloc_order nvmet_tcp_map_data nvmet_tcp_try_recv_pdu

As it's never good to trip a kernel warning remotely due to many systems having panic-on-warn enabled, let's silence it by just add GFP_NOWARN to the allocation flags.

Affected Software

VendorProductVersion RangeStatus
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 8d01f0d0e96485e39ad89b859ef85e1dc3020465affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 7b6a54d4e7b0da423c2b53ed293fd36b16c0b19eaffected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < e7077e6c45423dd2bb7de7b5fc4b018a8e6c4741affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 86cc450022473c4a29b43a09f3ec22a9ef566dacaffected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < c509f20be1cabda3087810bb2d658d66b3f31f35affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 9c95f7e66c62ee6c6abedcf1c04311f430ff5833affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 7fd6da0f28932442b51658bac4ff55565ca9b377affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 9b770e40bc00381e5ebf53653de5776773415be3affected
LinuxLinux1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 737a3b535247226f6e1a7988fd9d6e63e7d6fc71affected
LinuxLinux0 < 5.10.267affected
LinuxLinux0 < 5.15.218affected
LinuxLinux0 < 6.1.185affected
LinuxLinux0 < 6.6.154affected
LinuxLinux0 < 6.12.106affected
LinuxLinux0 < 6.18.47affected
LinuxLinux0 < 7.1.11affected
LinuxLinux0 < 7.2.1affected
LinuxLinux5.10.267 <= 5.10.*unaffected
LinuxLinux5.15.218 <= 5.15.*unaffected
LinuxLinux6.1.185 <= 6.1.*unaffected
LinuxLinux6.6.154 <= 6.6.*unaffected
LinuxLinux6.12.106 <= 6.12.*unaffected
LinuxLinux6.18.47 <= 6.18.*unaffected
LinuxLinux7.1.11 <= 7.1.*unaffected
LinuxLinux7.2.1 <= 7.2.*unaffected
LinuxLinux7.3-rc1 <= *unaffected

Weaknesses

References