ipv6/addrlabel: fix ip6addrlbl_get()
authorAndrey Ryabinin <aryabinin@virtuozzo.com>
Mon, 21 Dec 2015 09:54:45 +0000 (12:54 +0300)
committerWilly Tarreau <w@1wt.eu>
Fri, 29 Jan 2016 21:12:57 +0000 (22:12 +0100)
commit5a7fbabb106b0ba1b30921537f2e5928e153bdf3
tree8a5a19b4ee2e35878b8d370f94a6be18319bed32
parent3bf5fe19a9537b0976a4d7452b8b8702c2fb07e8
ipv6/addrlabel: fix ip6addrlbl_get()

commit e459dfeeb64008b2d23bdf600f03b3605dbb8152 upstream.

ip6addrlbl_get() has never worked. If ip6addrlbl_hold() succeeded,
ip6addrlbl_get() will exit with '-ESRCH'. If ip6addrlbl_hold() failed,
ip6addrlbl_get() will use about to be free ip6addrlbl_entry pointer.

Fix this by inverting ip6addrlbl_hold() check.

Fixes: 2a8cc6c89039 ("[IPV6] ADDRCONF: Support RFC3484 configurable address selection policy table.")
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Reviewed-by: Cong Wang <cwang@twopensource.com>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
(cherry picked from commit 39b214ba1a357359f9c0be6ef8d21f2e5187567a)
Signed-off-by: Willy Tarreau <w@1wt.eu>
net/ipv6/addrlabel.c