Re: [PATCH net] mlxsw: spectrum: Forbid creation of VLAN 1 over port/LAG

Jiri Pirko
2018-05-27T12:27:18Z

Sun, May 27, 2018 at 08:48:41AM CEST, idosch@mellanox.com wrote:
>From: Petr Machata <petrm@mellanox.com>
>
>VLAN 1 is internally used for untagged traffic. Prevent creation of
>explicit netdevice for that VLAN, because that currently isn't supported
>and leads to the NULL pointer dereference cited below.
>
>Fix by preventing creation of VLAN devices with VID of 1 over mlxsw
>devices or LAG devices that involve mlxsw devices.
>
>[ 327.175816] ================================================================================
>[ 327.184544] UBSAN: Undefined behaviour in drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c:200:12
>[ 327.193667] member access within null pointer of type 'const struct mlxsw_sp_fid'
>[ 327.201226] CPU: 0 PID: 8983 Comm: ip Not tainted 4.17.0-rc4-petrm_net_ip6gre_headroom-custom-140 #11
>[ 327.210496] Hardware name: Mellanox Technologies Ltd. "MSN2410-CB2F"/"SA000874", BIOS 4.6.5 03/08/2016
>[ 327.219872] Call Trace:
>[ 327.222384] dump_stack+0xc3/0x12b
>[ 327.234007] ubsan_epilogue+0x9/0x49
>[ 327.237638] ubsan_type_mismatch_common+0x1f9/0x2d0
>[ 327.255769] __ubsan_handle_type_mismatch+0x90/0xa7
>[ 327.264716] mlxsw_sp_fid_type+0x35/0x50 [mlxsw_spectrum]
>[ 327.270255] mlxsw_sp_port_vlan_router_leave+0x46/0xc0 [mlxsw_spectrum]
>[ 327.277019] mlxsw_sp_inetaddr_port_vlan_event+0xe1/0x340 [mlxsw_spectrum]
>[ 327.315031] mlxsw_sp_netdevice_vrf_event+0xa8/0x100 [mlxsw_spectrum]
>[ 327.321626] mlxsw_sp_netdevice_event+0x276/0x430 [mlxsw_spectrum]
>[ 327.367863] notifier_call_chain+0x4c/0x150
>[ 327.372128] __netdev_upper_dev_link+0x1b3/0x260
>[ 327.399450] vrf_add_slave+0xce/0x170 [vrf]
>[ 327.403703] do_setlink+0x658/0x1d70
>[ 327.508998] rtnl_newlink+0x908/0xf20
>[ 327.559128] rtnetlink_rcv_msg+0x50c/0x720
>[ 327.571720] netlink_rcv_skb+0x16a/0x1f0
>[ 327.583450] netlink_unicast+0x2ca/0x3e0
>[ 327.599305] netlink_sendmsg+0x3e2/0x7f0
>[ 327.616655] sock_sendmsg+0x76/0xc0
>[ 327.620207] ___sys_sendmsg+0x494/0x5d0
>[ 327.666117] __sys_sendmsg+0xc2/0x130
>[ 327.690953] do_syscall_64+0x66/0x370
>[ 327.694677] entry_SYSCALL_64_after_hwframe+0x49/0xbe
>[ 327.699782] RIP: 0033:0x7f4c2f3f8037
>[ 327.703393] RSP: 002b:00007ffe8c389708 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
>[ 327.711035] RAX: ffffffffffffffda RBX: 000000005b03f53e RCX: 00007f4c2f3f8037
>[ 327.718229] RDX: 0000000000000000 RSI: 00007ffe8c389760 RDI: 0000000000000003
>[ 327.725431] RBP: 00007ffe8c389760 R08: 0000000000000000 R09: 00007f4c2f443630
>[ 327.732632] R10: 00000000000005eb R11: 0000000000000246 R12: 0000000000000000
>[ 327.739833] R13: 00000000006774e0 R14: 00007ffe8c3897e8 R15: 0000000000000000
>[ 327.747096] ================================================================================
>
>Fixes: 9589a7b5d7d9 ("mlxsw: spectrum: Handle VLAN devices linking / unlinking")
>Suggested-by: Ido Schimmel <idosch@mellanox.com>
>Signed-off-by: Petr Machata <petrm@mellanox.com>
>Signed-off-by: Ido Schimmel <idosch@mellanox.com>

Acked-by: Jiri Pirko <jiri@mellanox.com>