linux-uconsole/drivers/net
Eric Dumazet a3b6fa373a vxlan: test dev->flags & IFF_UP before calling netif_rx()
[ Upstream commit 4179cb5a4c ]

netif_rx() must be called under a strict contract.

At device dismantle phase, core networking clears IFF_UP
and flush_all_backlogs() is called after rcu grace period
to make sure no incoming packet might be in a cpu backlog
and still referencing the device.

Most drivers call netif_rx() from their interrupt handler,
and since the interrupts are disabled at device dismantle,
netif_rx() does not have to check dev->flags & IFF_UP

Virtual drivers do not have this guarantee, and must
therefore make the check themselves.

Otherwise we risk use-after-free and/or crashes.

Note this patch also fixes a small issue that came
with commit ce6502a8f9 ("vxlan: fix a use after free
in vxlan_encap_bypass"), since the dev->stats.rx_dropped
change was done on the wrong device.

Fixes: d342894c5d ("vxlan: virtual extensible lan")
Fixes: ce6502a8f9 ("vxlan: fix a use after free in vxlan_encap_bypass")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Petr Machata <petrm@mellanox.com>
Cc: Ido Schimmel <idosch@mellanox.com>
Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
Cc: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-02-23 09:07:25 +01:00
..
appletalk net/appletalk: fix minor pointer leak to userspace in SIOCFINDIPDDPRT 2018-09-13 10:35:57 -07:00
arcnet
bonding bonding: update nest level on unlink 2019-01-22 21:40:31 +01:00
caif
can can: flexcan: fix NULL pointer exception during bringup 2019-01-31 08:14:39 +01:00
dsa dsa: mv88e6xxx: Ensure all pending interrupts are handled prior to exit 2019-02-23 09:07:24 +01:00
ethernet sky2: Increase D3 delay again 2019-02-23 09:07:25 +01:00
fddi
fjes
hamradio net/hamradio/6pack: use mod_timer() to rearm timers 2019-01-09 17:38:32 +01:00
hippi
hyperv hv_netvsc: fix vf serial matching with pci slot info 2018-11-13 11:08:21 -08:00
ieee802154 ieee802154: ca8210: fix possible u8 overflow in ca8210_rx_done 2019-01-13 09:50:58 +01:00
ipvlan ipvlan, l3mdev: fix broken l3s mode wrt local routes 2019-02-06 17:30:06 +01:00
netdevsim
phy net: phy: xgmiitorgmii: Support generic PHY status read 2019-02-23 09:07:25 +01:00
plip
ppp net: Fix usage of pskb_trim_rcsum 2019-01-31 08:14:31 +01:00
slip
team team: no need to do team_notify_peers or team_mcast_rejoin when disabling port 2018-12-13 09:16:15 +01:00
usb usbnet: smsc95xx: fix rx packet alignment 2019-02-12 19:47:00 +01:00
vmxnet3
wan net/wan: fix a double free in x25_asy_open_tty() 2019-01-09 17:38:32 +01:00
wimax wimax/i2400m: fix spelling mistake "not unitialized" -> "uninitialized" 2018-09-26 20:09:58 -07:00
wireless ath9k: dynack: check da->enabled first in sampling routines 2019-02-12 19:47:27 +01:00
xen-netback xen-netback: handle page straddling in xenvif_set_hash_mapping() 2018-09-25 10:39:34 -07:00
dummy.c
eql.c
geneve.c geneve, vxlan: Don't set exceptions if skb->len < mtu 2018-10-17 21:51:13 -07:00
gtp.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c net: loopback: clear skb->tstamp before netif_rx() 2018-11-13 11:08:20 -08:00
macsec.c
macvlan.c macvlan: return correct error value 2018-12-21 14:15:20 +01:00
macvtap.c
Makefile
mdio.c
mii.c
net_failover.c failover: Add missing check to validate 'slave_dev' in net_failover_slave_unregister 2018-11-13 11:08:28 -08:00
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c rapidio/rionet: do not free skb before reading its length 2018-12-05 19:31:59 +01:00
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c tun: move the call to tun_set_real_num_queues 2019-02-06 17:30:07 +01:00
veth.c veth: Orphan skb before GRO 2018-09-16 15:33:50 -07:00
virtio_net.c virtio_net: Account for tx bytes and packets on sending xdp_frames 2019-02-12 19:47:23 +01:00
vrf.c
vsockmon.c
vxlan.c vxlan: test dev->flags & IFF_UP before calling netif_rx() 2019-02-23 09:07:25 +01:00
xen-netfront.c xen/netfront: tolerate frags with no data 2019-01-09 17:38:34 +01:00