tun: avoid high-order page allocation for packet header
authorTahsin Erdogan <trdgn@amazon.com>
Wed, 9 Aug 2023 16:47:52 +0000 (09:47 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 11 Aug 2023 02:33:35 +0000 (19:33 -0700)
commit6231e47b6fadf42da2e7a45b8272e80aed53c444
tree88e72bf2193a5d6e53630b2fec8119940b7a6276
parent5604ac35cb6ec34ad608008ba851568c385fd3f4
tun: avoid high-order page allocation for packet header

When gso.hdr_len is zero and a packet is transmitted via write() or
writev(), all payload is treated as header which requires a contiguous
memory allocation. This allocation request is harder to satisfy, and may
even fail if there is enough fragmentation.

Note that sendmsg() code path limits the linear copy length, so this change
makes write()/writev() and sendmsg() paths more consistent.

Signed-off-by: Tahsin Erdogan <trdgn@amazon.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20230809164753.2247594-1-trdgn@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/tun.c