mbox series

[ipsec-next,0/3] xfrm: not register one xfrm(6)_tunnel object twice

Message ID cover.1594625993.git.lucien.xin@gmail.com
Headers show
Series xfrm: not register one xfrm(6)_tunnel object twice | expand

Message

Xin Long July 13, 2020, 7:42 a.m. UTC
Now in ip(6)_vti and xfrm interface tunnel support, it uses the
same xfrm(6)_tunnel object to handle for AF_NET and AF_INET6 by
registering it twice.

However the xfrm(6)_tunnel object is linked into a list with its
'next' pointer. The second registering will cause its 'next'
pointer to be overwritten, and break the list.

So this patchset is to add a new xfrm(6)_tunnel object for each
of them and register it, although its members are the same with
the old one.

Xin Long (3):
  ip_vti: not register vti_ipip_handler twice
  ip6_vti: not register vti_ipv6_handler twice
  xfrm: interface: not xfrmi_ipv6/ipip_handler twice

 net/ipv4/ip_vti.c         | 13 ++++++++++---
 net/ipv6/ip6_vti.c        | 13 ++++++++++---
 net/xfrm/xfrm_interface.c | 22 ++++++++++++++++++----
 3 files changed, 38 insertions(+), 10 deletions(-)

Comments

Steffen Klassert July 16, 2020, 6:32 a.m. UTC | #1
On Mon, Jul 13, 2020 at 03:42:35PM +0800, Xin Long wrote:
> Now in ip(6)_vti and xfrm interface tunnel support, it uses the
> same xfrm(6)_tunnel object to handle for AF_NET and AF_INET6 by
> registering it twice.
> 
> However the xfrm(6)_tunnel object is linked into a list with its
> 'next' pointer. The second registering will cause its 'next'
> pointer to be overwritten, and break the list.
> 
> So this patchset is to add a new xfrm(6)_tunnel object for each
> of them and register it, although its members are the same with
> the old one.
> 
> Xin Long (3):
>   ip_vti: not register vti_ipip_handler twice
>   ip6_vti: not register vti_ipv6_handler twice
>   xfrm: interface: not xfrmi_ipv6/ipip_handler twice


Applied, thanks Xin!