mirror of
https://github.com/torvalds/linux.git
synced 2026-09-14 16:10:02 +02:00
Since BIG TCP for UDP tunnels will start using len=0 in the UDP header as an indicator of a GSO packet bigger than 65535 bytes, this commit introduces the following getter and setters to use tree-wide, in order to explicitly mark places where len=0 may be expected, and handle them properly: 1. udp_set_len() sets uh->len to its real value if it's not bigger than 65535, and to 0 otherwise: to be used in GSO context with aggregated packets. 2. udp_set_len_short() is to be used when the length is known to fit 16 bits. It WARNs when the caller tries to assign a bigger value if CONFIG_DEBUG_NET=y. 3. udp_get_len_short() returns len in host byte order: to be used on the RX side to deal with non-aggregated packets, or to access the raw value of the len field. 4. udp_get_len() decodes uh->len set by udp_set_len(). It checks whether the packet is GSO to guard from malformed packets. At the moment udp_set_len() is not used, a following commit will start using it after enabling len>65535 for GSO. Raw uh->len (in network byte order) is still accessed in a few places for checksum calculation purposes, and to decode len=0 in udpv6_rcv for jumbograms. udp_rcv and udpv6_rcv will be addressed by the commit that starts using udp_set_len() to set UDP len=0 for BIG TCP packets in UDP tunnels. Signed-off-by: Alice Mikityanska <alice@isovalent.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Acked-by: Jason A. Donenfeld <Jason@zx2c4.com> Link: https://patch.msgid.link/20260710134242.216538-2-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com> |
||
|---|---|---|
| .. | ||
| module | ||
| base64_kunit.c | ||
| bitfield_kunit.c | ||
| bitops_kunit.c | ||
| blackhole_dev_kunit.c | ||
| checksum_kunit.c | ||
| cmdline_kunit.c | ||
| cpumask_kunit.c | ||
| ffs_kunit.c | ||
| fortify_kunit.c | ||
| glob_kunit.c | ||
| hashtable_test.c | ||
| is_signed_type_kunit.c | ||
| kfifo_kunit.c | ||
| kunit_iov_iter.c | ||
| list-private-test.c | ||
| list-test.c | ||
| liveupdate.c | ||
| longest_symbol_kunit.c | ||
| Makefile | ||
| memcpy_kunit.c | ||
| min_heap_kunit.c | ||
| overflow_kunit.c | ||
| printf_kunit.c | ||
| randstruct_kunit.c | ||
| scanf_kunit.c | ||
| seq_buf_kunit.c | ||
| shdi3_kunit.c | ||
| siphash_kunit.c | ||
| slub_kunit.c | ||
| stackinit_kunit.c | ||
| string_helpers_kunit.c | ||
| string_kunit.c | ||
| test_bits.c | ||
| test_fprobe.c | ||
| test_hash.c | ||
| test_kprobes.c | ||
| test_linear_ranges.c | ||
| test_list_sort.c | ||
| test_ratelimit.c | ||
| test_sort.c | ||
| usercopy_kunit.c | ||
| util_macros_kunit.c | ||
| uuid_kunit.c | ||