linux/Documentation
Jamal Hadi Salim 1aa9e143bf net: reject oversized tx_queue_len at netlink parse time
rtnl_create_link() assigns IFLA_TXQLEN directly to dev->tx_queue_len
without going through netif_change_tx_queue_len(), so a device created
with "ip link add ... txqueuelen 500000" bypasses the S16_MAX cap and
still triggers the oversized ring allocations in pfifo_fast, tun and
tap. The veth peer nest (rtnl_nla_parse_ifinfomsg()) and the
RTM_NEWLINK-on-existing-device path reach the same sinks.

Enforce the cap in ifla_policy instead: IFLA_TXQLEN becomes
NLA_POLICY_FULL_RANGE(NLA_U32, &txqlen_range) with
txqlen_range = { .min = 0, .max = S16_MAX }. All netlink consumers
parse against this policy - rtnl_setlink(), rtnl_newlink() (create
and change), and the veth peer nest - so every netlink path is capped
at parse time and rejects the attribute with -ERANGE plus a proper
"integer out of range" extack message before any device state is
modified (the RTM_SETLINK half-application wart is gone with it).

Document the bound in the rt-link.yaml netlink spec.

Conditions to recreate the bug:
- CONFIG_NET_SCHED=y, CONFIG_VETH=y, CONFIG_USER_NS=y, CONFIG_NET_NS=y.
- Unprivileged user in a fresh user+net namespace (unshare -Urn):
  ip link add v0 txqueuelen 500000 type veth peer name v1
  -> on the fixed kernel this is rejected with -ERANGE ("integer out
  of range" extack) instead of installing an oversized tx_queue_len
  that later inflates pfifo_fast/tun/tap ring allocations.
- ip link set v0 txqueuelen 500000 is likewise rejected at parse time.

Fixes: 38f7b870d4 ("[RTNETLINK]: Link creation API")
Reported-by: Vega <vega@nebusec.ai>
Tested-by: Victor Nogueira <victor@mojatatu.com>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Link: https://patch.msgid.link/QDISC-2899.v2.20260901233641@mojatatu.com.2
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-09-04 16:30:49 -07:00
..
ABI f2fs-for-7.3-rc1 2026-08-28 10:48:48 -07:00
accel
accounting
admin-guide cgroup: Fixes for v7.3-rc1 2026-08-31 14:20:32 -07:00
arch platform-drivers-x86 for v7.3-1 2026-08-24 10:16:35 -07:00
block A handful of late-arriving fixes, a Japanese translation that was ready 2026-08-26 09:25:12 -07:00
bpf bpf, arm64: Convert struct_ops arena arguments in the trampoline 2026-08-14 05:55:02 +02:00
cdrom
core-api mm.git review status for linus..mm-stable 2026-08-27 09:17:06 -07:00
cpu-freq
crypto This update includes the following changes: 2026-08-19 17:25:42 -07:00
dev-tools mm.git review status for linus..mm-stable 2026-08-27 09:17:06 -07:00
devicetree drm next/fixes for 7.3-rc1 2026-08-28 16:37:55 -07:00
doc-guide
driver-api More ACPI support updates for 7.3-rc1 2026-08-26 14:06:08 -07:00
edac
fault-injection
fb
features alpha: enable lockdep hardirq state tracking 2026-07-19 13:16:26 +02:00
filesystems A wide variety of mostly CephFS fixes and cleanups, split between 2026-08-28 11:51:05 -07:00
firmware_class
firmware-guide docs: ACPI: DSD: motorcomm: fix docs build error 2026-07-21 15:23:16 +02:00
fpga
gpu DRM Rust changes for v7.3-rc1 2026-08-10 14:48:11 +10:00
hid HID: add documentation and Coccinelle script for FF registration race 2026-08-14 14:46:20 +02:00
hwmon Char/Misc/IIO/etc driver update for 7.3-rc1 2026-08-25 09:38:50 -07:00
i2c
iio
images
infiniband docs: infiniband: fix bracket 2026-07-02 14:23:19 -03:00
input
kbuild
kernel-hacking Documentation: locking.rst: update deprecated function 2026-07-15 10:51:27 -06:00
leds leds: st1202: Correct and extend hw_pattern documentation 2026-07-09 10:53:04 +01:00
litmus-tests
livepatch
locking
maintainer
mhi
misc-devices docs: misc: amd-sbi: Document SBTSI userspace interface 2026-07-17 15:50:48 +02:00
mm mm.git review status for linus..mm-stable 2026-08-27 09:17:06 -07:00
netlabel
netlink net: reject oversized tx_queue_len at netlink parse time 2026-09-04 16:30:49 -07:00
networking docs: oa-tc6-framework: Fix link to specification 2026-08-20 13:31:54 -07:00
nvdimm
nvme
PCI Documentation: PCI: Document how to write PCI Host Controller drivers 2026-08-12 14:20:48 -05:00
pcmcia
peci
power
process Coccinelle patches for Linux v7.3 2026-08-30 10:42:40 -07:00
RCU doc: RCU: Fix brackets 2026-07-23 10:47:10 -07:00
rust docs: rust: quick-start: remove Ubuntu 25.10 2026-08-10 06:44:10 +02:00
scheduler sched_ext: Fixes for v7.3-rc1 2026-08-31 13:13:35 -07:00
scsi scsi: leapraid: Standardize NCQ priority sysfs attributes 2026-08-23 21:57:41 -04:00
security Landlock update for v7.3-rc1 2026-08-21 12:28:35 -07:00
sound ALSA: usb-audio: Reverse MIXER_GET_CUR_BROKEN as MIXER_GET_CUR_OK 2026-08-23 11:03:34 +02:00
sphinx docs: maintainers_include: fix entry names 2026-07-16 15:45:12 -06:00
sphinx-includes
sphinx-static Documentation: html: adjust sidebar section titles styling 2026-08-05 13:37:41 -06:00
spi docs: spi: add documentation for userspace device instantiation 2026-08-06 19:13:15 +01:00
staging rpmsg: core: Fix incorrect return value documentation 2026-07-09 14:45:37 -05:00
sunrpc/xdr nfsd: add support to CB_NOTIFY for dir attribute changes 2026-08-10 09:54:35 -04:00
target
tee
timers
tools Documentation/rtla: Document unsetting options 2026-08-05 10:14:40 +02:00
trace perf tools updates for v7.3 2026-08-22 08:47:50 -07:00
translations mm.git review status for linus..mm-stable 2026-08-27 09:17:06 -07:00
usb usb: gadget: f_uac1_legacy: remove broken string configfs attributes 2026-07-17 12:33:37 +02:00
userspace-api mm.git review status for linus..mm-stable 2026-08-27 09:17:06 -07:00
virt Arm: 2026-08-25 11:48:04 -07:00
w1 dt-bindings: w1: Convert HDQ One Wire to DT schema 2026-07-04 10:21:30 +02:00
watchdog docs: watchdog: npcm: Add reset status description 2026-08-10 09:00:04 -07:00
wmi
.gitignore
.renames.txt
atomic_bitops.txt
atomic_t.txt
Changes
CodingStyle
conf.py docs: conf.py: fix the 'utf-8' typo 2026-08-11 10:45:54 -06:00
docutils.conf
index.rst Documentation: html: show sections in the sidebar 2026-08-05 13:04:26 -06:00
Kconfig
Makefile
memory-barriers.txt
SubmittingPatches
subsystem-apis.rst