diff options
| author | David S. Miller <davem@davemloft.net> | 2011-01-24 17:37:46 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-01-24 17:38:09 -0500 |
| commit | 3408404a4c2a4eead9d73b0bbbfe3f225b65f492 (patch) | |
| tree | b0be5af0a2886a3f5bc075d94c4c621ff6802973 | |
| parent | d1dc7abf2fafa34b0ffcd070fd59405aa9c0a4d8 (diff) | |
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>
| -rw-r--r-- | net/ipv4/inetpeer.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index d9bc85751c74..a96e65674ac3 100644 --- a/net/ipv4/inetpeer.c +++ b/net/ipv4/inetpeer.c | |||
| @@ -475,7 +475,7 @@ static int cleanup_once(unsigned long ttl) | |||
| 475 | struct inet_peer *inet_getpeer(struct inetpeer_addr *daddr, int create) | 475 | struct inet_peer *inet_getpeer(struct inetpeer_addr *daddr, int create) |
| 476 | { | 476 | { |
| 477 | struct inet_peer __rcu **stack[PEER_MAXDEPTH], ***stackptr; | 477 | struct inet_peer __rcu **stack[PEER_MAXDEPTH], ***stackptr; |
| 478 | struct inet_peer_base *base = family_to_base(AF_INET); | 478 | struct inet_peer_base *base = family_to_base(daddr->family); |
| 479 | struct inet_peer *p; | 479 | struct inet_peer *p; |
| 480 | 480 | ||
| 481 | /* Look up for the address quickly, lockless. | 481 | /* Look up for the address quickly, lockless. |
