diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2010-07-19 15:26:45 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-07-20 02:28:25 -0400 |
commit | 573201f36fd9c7c6d5218cdcd9948cee700b277d (patch) | |
tree | 3fdd5cd05e26fdfe38d5d1a72b4d4aa41ecd181f /net/bridge/br_device.c | |
parent | 45e77d314585869dfe43c82679f7e08c9b35b898 (diff) |
bridge: Partially disable netpoll support
The new netpoll code in bridging contains use-after-free bugs
that are non-trivial to fix.
This patch fixes this by removing the code that uses skbs after
they're freed.
As a consequence, this means that we can no longer call bridge
from the netpoll path, so this patch also removes the controller
function in order to disable netpoll.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Thanks,
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_device.c')
-rw-r--r-- | net/bridge/br_device.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index eedf2c94820e..753fc4221f3c 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c | |||
@@ -217,14 +217,6 @@ static bool br_devices_support_netpoll(struct net_bridge *br) | |||
217 | return count != 0 && ret; | 217 | return count != 0 && ret; |
218 | } | 218 | } |
219 | 219 | ||
220 | static void br_poll_controller(struct net_device *br_dev) | ||
221 | { | ||
222 | struct netpoll *np = br_dev->npinfo->netpoll; | ||
223 | |||
224 | if (np->real_dev != br_dev) | ||
225 | netpoll_poll_dev(np->real_dev); | ||
226 | } | ||
227 | |||
228 | void br_netpoll_cleanup(struct net_device *dev) | 220 | void br_netpoll_cleanup(struct net_device *dev) |
229 | { | 221 | { |
230 | struct net_bridge *br = netdev_priv(dev); | 222 | struct net_bridge *br = netdev_priv(dev); |
@@ -295,7 +287,6 @@ static const struct net_device_ops br_netdev_ops = { | |||
295 | .ndo_do_ioctl = br_dev_ioctl, | 287 | .ndo_do_ioctl = br_dev_ioctl, |
296 | #ifdef CONFIG_NET_POLL_CONTROLLER | 288 | #ifdef CONFIG_NET_POLL_CONTROLLER |
297 | .ndo_netpoll_cleanup = br_netpoll_cleanup, | 289 | .ndo_netpoll_cleanup = br_netpoll_cleanup, |
298 | .ndo_poll_controller = br_poll_controller, | ||
299 | #endif | 290 | #endif |
300 | }; | 291 | }; |
301 | 292 | ||