Commit 3408404a authored by David S. Miller's avatar David S. Miller

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: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d1dc7abf
...@@ -475,7 +475,7 @@ static int cleanup_once(unsigned long ttl) ...@@ -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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment