mirror-linux/drivers/net
Weiming Shi 3bcf7aec6a tap: free page on error paths in tap_get_user_xdp()
tap_get_user_xdp() rejects a frame shorter than ETH_HLEN with -EINVAL,
and returns -ENOMEM when build_skb() fails. Both paths jump to the err
label without freeing the page that vhost_net_build_xdp() allocated for
the frame. tap_sendmsg() discards the per-buffer return value and always
returns 0, so vhost_tx_batch() takes the success path and never frees
the page; each rejected frame in a batch leaks one page-frag chunk.

Free the page on both error paths, before the skb is built. This is the
tap counterpart of the same leak in tun_xdp_one().

Fixes: 0efac27791 ("tap: accept an array of XDP buffs through sendmsg()")
Fixes: ed7f2afdd0 ("tap: add missing verification for short frame")
Reported-by: Xiang Mei <xmei5@asu.edu>
Signed-off-by: Weiming Shi <bestswngs@gmail.com>
Reviewed-by: Dongli Zhang <dongli.zhang@oracle.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20260521163230.1478627-2-bestswngs@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-05-22 10:08:59 -07:00
..
arcnet
bonding bonding: 3ad: implement proper RCU rules for port->aggregator 2026-04-29 18:32:02 -07:00
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-04-14 12:04:00 -07:00
dsa net: dsa: mt7530: untag VLAN-aware bridge PVID 2026-05-19 12:37:34 +02:00
ethernet net: enetc: avoid VF->PF mailbox timeout during SR-IOV teardown 2026-05-21 08:49:00 -07:00
fddi FDDI: defza: Sanitise the reset safety timer 2026-05-13 17:31:01 -07:00
fjes
hyperv
ieee802154
ipa Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-04-14 12:04:00 -07:00
ipvlan Networking changes for 7.1. 2026-04-14 18:36:10 -07:00
mctp net: mctp i2c: check length before marking flow active 2026-04-28 13:11:53 +02:00
mdio net: mdio: MDIO_PIC64HPSC should depend on ARCH_MICROCHIP 2026-04-16 19:04:58 -07:00
netdevsim netdevsim: psp: rcu protect psp_dev reference 2026-05-06 17:39:20 -07:00
ovpn ovpn: disable BHs when updating device stats 2026-05-15 00:43:55 +02:00
pcs
phy net: phy: honor eee_disabled_modes in phy_advertise_eee_all() 2026-05-19 18:45:26 -07:00
plip
ppp pppoe: drop PFC frames 2026-04-20 11:35:17 -07:00
pse-pd net: pse-pd: fix sign on -ENOENT check in of_load_pse_pis() 2026-05-19 17:44:27 -07:00
slip slip: bound decode() reads against the compressed packet length 2026-04-21 10:18:18 +02:00
team net: team: Add new tx_enabled team port option 2026-04-13 15:09:49 +02:00
thunderbolt
usb net: usb: asix: ax88772: re-add usbnet_link_change() in phylink callbacks 2026-05-04 19:04:15 -07:00
vmxnet3
vxlan Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-04-02 11:03:13 -07:00
wan net: wan: fsl_ucc_hdlc: free tx_skbuff in uhdlc_memclean 2026-05-08 18:48:30 -07:00
wireguard wireguard: device: use exit_rtnl callback instead of manual rtnl_lock in pre_exit 2026-04-14 11:48:04 -07:00
wireless ath.git update for v7.1-rc5 2026-05-20 11:27:00 +02:00
wwan net: wwan: iosm: fix potential memory leaks in ipc_imem_init() 2026-05-21 08:06:02 -07:00
xen-netback
Kconfig caif: remove CAIF NETWORK LAYER 2026-04-23 10:23:44 -07:00
LICENSE.SRC
Makefile net: remove ax25 and amateur radio (hamradio) subsystem 2026-04-23 10:24:02 -07:00
Space.c drivers: net: 8390: wd80x3: Remove this driver 2026-04-23 15:57:10 -07:00
amt.c
bareudp.c bareudp: fix NULL pointer dereference in bareudp_fill_metadata_dst() 2026-04-28 18:16:53 -07:00
dummy.c dummy: convert to ndo_set_rx_mode_async 2026-04-21 12:50:25 +02:00
eql.c
geneve.c
gtp.c gtp: disable BH before calling udp_tunnel_xmit_skb() 2026-04-20 11:46:24 -07:00
ifb.c net: ifb: report ethtool stats over num_tx_queues 2026-05-14 18:40:04 -07:00
loopback.c
macsec.c macsec: use rcu_work to defer TX SA crypto cleanup out of softirq 2026-05-13 19:03:05 -07:00
macvlan.c macvlan: fix macvlan_get_size() not reserving space for IFLA_MACVLAN_BC_CUTOFF 2026-04-16 12:17:11 +02:00
macvtap.c kernfs: pass struct ns_common instead of const void * for namespace tags 2026-04-09 14:36:52 +02:00
mdio.c
mhi_net.c
mii.c
net_failover.c net: net_failover: Fix the deadlock in slave register 2026-05-13 19:01:03 -07:00
netconsole.c netconsole: restore userdatum value on update_userdata() failure 2026-04-28 18:28:12 -07:00
netkit.c netkit: convert to ndo_set_rx_mode_async 2026-04-21 12:50:25 +02:00
nlmon.c
ntb_netdev.c
pfcp.c
rionet.c
sungem_phy.c
tap.c tap: free page on error paths in tap_get_user_xdp() 2026-05-22 10:08:59 -07:00
tun.c tun: free page on short-frame rejection in tun_xdp_one() 2026-05-22 07:56:27 -07:00
tun_vnet.h
veth.c veth: fix OOB txq access in veth_poll() with asymmetric queue counts 2026-05-07 16:24:07 +02:00
virtio_net.c virtio_net: sync rss_trailer.max_tx_vq on queue_pairs change via VQ_PAIRS_SET 2026-04-23 09:35:53 -07:00
vrf.c vrf: Fix a potential NPD when removing a port from a VRF 2026-04-27 17:43:22 -07:00
vsockmon.c
xen-netfront.c