提交 9a873c71 编写于 作者: C Chas Williams 提交者: David S. Miller

net/xen-netfront: only clean up queues if present

If you simply load and unload the module without starting the interfaces,
the queues are never created and you get a bad pointer dereference.
Signed-off-by: NChas Williams <3chas3@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 f5117ce4
......@@ -1336,7 +1336,7 @@ static void xennet_disconnect_backend(struct netfront_info *info)
netif_carrier_off(info->netdev);
for (i = 0; i < num_queues; ++i) {
for (i = 0; i < num_queues && info->queues; ++i) {
struct netfront_queue *queue = &info->queues[i];
if (queue->tx_irq && (queue->tx_irq == queue->rx_irq))
......@@ -2101,7 +2101,8 @@ static int xennet_remove(struct xenbus_device *dev)
unregister_netdev(info->netdev);
xennet_destroy_queues(info);
if (info->queues)
xennet_destroy_queues(info);
xennet_free_netdev(info->netdev);
return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册