xfrm: Add SA to hardware at the end of xfrm_state_construct()
authorYossi Kuperman <yossiku@mellanox.com>
Wed, 17 Jan 2018 13:52:41 +0000 (15:52 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Thu, 18 Jan 2018 10:09:29 +0000 (11:09 +0100)
commitcc01572e2fb080e279ca625f239aca61f435ebf3
tree93bd94fee95408caeab452c97c90a71b8f49f4d0
parentad9294dbc227cbc8e173b3b963e7dd9af5314f77
xfrm: Add SA to hardware at the end of xfrm_state_construct()

Current code configures the hardware with a new SA before the state has been
fully initialized. During this time interval, an incoming ESP packet can cause
a crash due to a NULL dereference. More specifically, xfrm_input() considers
the packet as valid, and yet, anti-replay mechanism is not initialized.

Move hardware configuration to the end of xfrm_state_construct(), and mark
the state as valid once the SA is fully initialized.

Fixes: d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API")
Signed-off-by: Aviad Yehezkel <aviadye@mellnaox.com>
Signed-off-by: Aviv Heller <avivh@mellanox.com>
Signed-off-by: Yossi Kuperman <yossiku@mellanox.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_state.c
net/xfrm/xfrm_user.c