inetpeer: Use correct AVL tree base pointer in inet_getpeer().
Family was hard-coded to AF_INET but should be daddr->family. This fixes crashes when unlinking ipv6 peer entries, since the unlink code was looking up the base pointer properly. Reported-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d1dc7abf2f
commit
3408404a4c
|
@ -475,7 +475,7 @@ static int cleanup_once(unsigned long ttl)
|
||||||
struct inet_peer *inet_getpeer(struct inetpeer_addr *daddr, int create)
|
struct inet_peer *inet_getpeer(struct inetpeer_addr *daddr, int create)
|
||||||
{
|
{
|
||||||
struct inet_peer __rcu **stack[PEER_MAXDEPTH], ***stackptr;
|
struct inet_peer __rcu **stack[PEER_MAXDEPTH], ***stackptr;
|
||||||
struct inet_peer_base *base = family_to_base(AF_INET);
|
struct inet_peer_base *base = family_to_base(daddr->family);
|
||||||
struct inet_peer *p;
|
struct inet_peer *p;
|
||||||
|
|
||||||
/* Look up for the address quickly, lockless.
|
/* Look up for the address quickly, lockless.
|
||||||
|
|
Loading…
Reference in New Issue