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

Published Sep 4, 2026
·
Updated

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 nvmettcpmapdata() 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 MAXPAGEORDER and then the page allocator will trip on a WARNONONCEGFP() message:

WARNING: mm/pagealloc.c:5280 allocfrozenpagesnoprof Workqueue: nvmettcpwq nvmettcpiowork ... sglallocorder nvmettcpmapdata nvmettcptryrecvpdu

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 GFPNOWARN to the allocation flags.

Affected Software

1 affected component
Linux Kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Apply the kernel fix for the resolved issue: update nvmet-tcp so that nvmet_tcp_map_data() does not WARN on remotely-controlled oversized SGL allocations by adding GFP_NOWARN to the allocation flags passed into the allocator (in the sgl_alloc_order path).

    Linux kernel (nvmet-tcp) GFP_NOWARN on remotely-controlled oversized SGL allocations in nvmet_tcp_map_data() = Add GFP_NOWARN to the allocator flags used by sgl_alloc_order (allocation of frozen/oversized SGL) to avoid WARN_ON_ONCE_GFP/panic-on-warn triggering

Event History

Sep 4, 2026
CVE Published
via MITRE·03:12 PM
Data Sourced
via MITRE·03:12 PM
Description

Frequently Asked Questions

1

Which systems are exposed to this issue?

Systems running the Linux kernel NVMe target TCP code are exposed when they accept commands from remote NVMe initiators. The triggering input is delivered by a remote initiator to the NVMe target.

2

What does an attacker need to send to trigger the warning?

A remote initiator must send a command containing an SGL that claims a very large number of entries. This can cause scatterlist and iovec allocations exceeding one million entries, leading the backing allocation to exceed MAX_PAGE_ORDER.

3

What is the practical impact if the warning is triggered?

The kernel can emit a page-allocation warning from the nvmet_tcp workqueue. On systems configured with panic-on-warn, a remotely triggered warning can cause a kernel panic.

4

How can I identify a possible trigger in logs?

Look for a page allocator warning involving __alloc_frozen_pages_noprof, with a stack that includes sgl_alloc_order, nvmet_tcp_map_data, nvmet_tcp_try_recv_pdu, and nvmet_tcp_io_work.

5

What does the available fix change?

The fix adds GFP_NOWARN to the affected allocation, preventing the remotely controlled oversized allocation request from producing the kernel warning.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203