]>
Commit | Line | Data |
---|---|---|
814f5a02 AD |
1 | From bb63f1f8a08cf8028564ad04831ebd7a8ffb9cba Mon Sep 17 00:00:00 2001 |
2 | From: Herbert Xu <herbert@gondor.apana.org.au> | |
3 | Date: Mon, 30 Apr 2012 00:22:56 +0000 | |
4 | Subject: bridge: Fix fatal typo in setup of multicast_querier_expired | |
5 | ||
6 | Unfortunately it seems that I didn't properly test the case of | |
7 | an expired external querier in the recent multicast bridge series. | |
8 | ||
9 | The setup of the timer in that case is completely broken and leads | |
10 | to a NULL-pointer dereference. This patch fixes it. | |
11 | ||
12 | Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |
13 | Acked-by: Stephen Hemminger <shemminger@vyatta.com> | |
14 | Signed-off-by: David S. Miller <davem@davemloft.net> | |
15 | --- | |
16 | (limited to 'net/bridge/br_multicast.c') | |
17 | ||
18 | diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c | |
19 | index 708e84f..5ca4c50 100644 | |
20 | --- a/net/bridge/br_multicast.c | |
21 | +++ b/net/bridge/br_multicast.c | |
22 | @@ -744,8 +744,7 @@ static void br_multicast_local_router_expired(unsigned long data) | |
23 | ||
24 | static void br_multicast_querier_expired(unsigned long data) | |
25 | { | |
26 | - struct net_bridge_port *port = (void *)data; | |
27 | - struct net_bridge *br = port->br; | |
28 | + struct net_bridge *br = (void *)data; | |
29 | ||
30 | spin_lock(&br->multicast_lock); | |
31 | if (!netif_running(br->dev) || br->multicast_disabled) | |
32 | @@ -1581,7 +1580,7 @@ void br_multicast_init(struct net_bridge *br) | |
33 | setup_timer(&br->multicast_router_timer, | |
34 | br_multicast_local_router_expired, 0); | |
35 | setup_timer(&br->multicast_querier_timer, | |
36 | - br_multicast_querier_expired, 0); | |
37 | + br_multicast_querier_expired, (unsigned long)br); | |
38 | setup_timer(&br->multicast_query_timer, br_multicast_query_expired, | |
39 | (unsigned long)br); | |
40 | } | |
41 | -- | |
42 | cgit v0.9.1 |