linux/drivers/net/can
Jakub Kicinski 3844e0c559 net: validate veth and vxcan peer ifindexes
[ Upstream commit f534f6581e ]

veth and vxcan need to make sure the ifindexes of the peer
are not negative, core does not validate this.

Using iproute2 with user-space-level checking removed:

Before:

  # ./ip link add index 10 type veth peer index -1
  # ip link show
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:74:b2:03 brd ff:ff:ff:ff:ff:ff
  10: veth1@veth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 8a:90:ff:57:6d:5d brd ff:ff:ff:ff:ff:ff
  -1: veth0@veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether ae:ed:18:e6:fa:7f brd ff:ff:ff:ff:ff:ff

Now:

  $ ./ip link add index 10 type veth peer index -1
  Error: ifindex can't be negative.

This problem surfaced in net-next because an explicit WARN()
was added, the root cause is older.

Fixes: e6f8f1a739 ("veth: Allow to create peer link with given ifindex")
Fixes: a8f820a380 ("can: add Virtual CAN Tunnel driver (vxcan)")
Reported-by: syzbot+5ba06978f34abb058571@syzkaller.appspotmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2023-08-30 14:52:31 +02:00
..
c_can can: c_can: Remove redundant pci_clear_master 2023-03-24 19:11:20 +01:00
cc770 net: Use of_property_read_bool() for boolean properties 2023-03-16 17:41:28 +00:00
ctucanfd can: ctucanfd: Remove redundant pci_clear_master 2023-03-24 19:11:20 +01:00
dev can: dev: fix missing CAN XL support in can_put_echo_skb() 2023-05-15 22:24:46 +02:00
flexcan can: flexcan: avoid unbalanced pm_runtime_enable warning 2022-12-19 16:08:27 +01:00
ifi_canfd can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
m_can can: m_can: Keep interrupts enabled during peripheral read 2023-03-24 19:13:54 +01:00
mscan can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
peak_canfd can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
rcar can: rcar_canfd: rcar_canfd_probe(): fix plain integer in transceivers[] init 2023-04-04 16:48:42 +02:00
sja1000 can: ems_pci: Add myself as module author 2023-02-02 17:33:53 +01:00
slcan can: slcan: fix freed work crash 2022-12-07 10:32:24 +01:00
softing can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
spi can: mcp251xfd: __mcp251xfd_chip_set_mode(): increase poll timeout 2023-07-27 08:56:36 +02:00
usb can: gs_usb: gs_can_close(): add missing set of CAN state to CAN_STATE_STOPPED 2023-08-03 10:26:03 +02:00
at91_can.c can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
bxcan.c can: bxcan: add support for single peripheral configuration 2023-05-15 22:26:17 +02:00
can327.c can: can327: flush TX_work on ldisc .close() 2022-12-07 10:32:36 +01:00
grcan.c can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
janz-ican3.c can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
Kconfig can: CAN_BXCAN should depend on ARCH_STM32 2023-05-15 22:24:47 +02:00
kvaser_pciefd.c can: kvaser_pciefd: Set hardware timestamp on transmitted packets 2023-07-19 16:35:34 +02:00
Makefile can: bxcan: add support for ST bxCAN controller 2023-03-28 11:43:36 +02:00
sun4i_can.c can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
ti_hecc.c can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00
vcan.c can: dev: add CAN XL support to virtual CAN 2022-09-15 09:08:09 +02:00
vxcan.c net: validate veth and vxcan peer ifindexes 2023-08-30 14:52:31 +02:00
xilinx_can.c can: dev: fix skb drop check 2022-11-07 14:00:27 +01:00