]> git.itanic.dy.fi Git - linux-stable/commit
ipv6/addrlabel: fix ip6addrlbl_get()
authorAndrey Ryabinin <aryabinin@virtuozzo.com>
Mon, 21 Dec 2015 09:54:45 +0000 (12:54 +0300)
committerSasha Levin <sasha.levin@oracle.com>
Mon, 15 Feb 2016 20:42:42 +0000 (15:42 -0500)
commitd27fa00889bc11220275eb3a7d107a72664e538f
treea20e6c0051f0645a92bb6a82ef6db6c10498e47c
parenta64b97e5ea7da62dd8011d6dc46705f560ae1de3
ipv6/addrlabel: fix ip6addrlbl_get()

[ Upstream commit e459dfeeb64008b2d23bdf600f03b3605dbb8152 ]

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: Sasha Levin <sasha.levin@oracle.com>
net/ipv6/addrlabel.c