Jiri Pirko 0f2d2b2736 mlxsw: spectrum_router: Fix error path in mlxsw_sp_vr_create
Since mlxsw_sp_fib_create() and mlxsw_sp_mr_table_create()
use ERR_PTR macro to propagate int err through return of a pointer,
the return value is not NULL in case of failure. So if one
of the calls fails, one of vr->fib4, vr->fib6 or vr->mr4_table
is not NULL and mlxsw_sp_vr_is_used wrongly assumes
that vr is in use which leads to crash like following one:

[ 1293.949291] BUG: unable to handle kernel NULL pointer dereference at 00000000000006c9
[ 1293.952729] IP: mlxsw_sp_mr_table_flush+0x15/0x70 [mlxsw_spectrum]

Fix this by using local variables to hold the pointers and set vr->*
only in case everything went fine.

Fixes: 76610ebbde18 ("mlxsw: spectrum_router: Refactor virtual router handling")
Fixes: a3d9bc506d64 ("mlxsw: spectrum_router: Extend virtual routers with IPv6 support")
Fixes: d42b0965b1d4 ("mlxsw: spectrum_router: Add multicast routes notification handling functionality")
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-02-13 12:22:29 -05:00
..
2018-02-06 09:59:40 -08:00
2018-02-01 16:35:31 -08:00
2018-02-07 11:22:44 -08:00
2018-02-02 10:01:04 -08:00
2018-02-10 13:16:35 -08:00
2018-02-06 09:59:40 -08:00
2018-02-08 12:03:54 -08:00
2018-02-06 09:59:40 -08:00
2018-02-01 16:35:31 -08:00
2018-02-09 19:32:41 -08:00
2018-01-31 11:32:27 -08:00
2018-02-01 10:31:17 -08:00
2018-02-04 11:16:35 -08:00
2018-02-06 09:59:40 -08:00
2018-02-01 09:40:49 -08:00
2018-01-30 12:25:59 +00:00
2018-02-05 10:07:40 -08:00
2018-02-06 09:59:40 -08:00
2018-02-01 16:35:31 -08:00
2018-01-22 16:45:26 +01:00
2018-02-09 19:32:41 -08:00
2018-02-01 10:31:17 -08:00
2018-02-06 09:59:40 -08:00