Commit f9244fb5 authored by Juergen Gross's avatar Juergen Gross
Browse files

xen/netfront: fix crash when removing device



When removing a netfront device directly after a suspend/resume cycle
it might happen that the queues have not been setup again, causing a
crash during the attempt to stop the queues another time.

Fix that by checking the queues are existing before trying to stop
them.

This is XSA-465 / CVE-2024-53240.

Reported-by: default avatarMarek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Fixes: d50b7914 ("xen-netfront: Fix NULL sring after live migration")
Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
parent f932fb9b
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -867,7 +867,7 @@ static netdev_tx_t xennet_start_xmit(struct sk_buff *skb, struct net_device *dev
static int xennet_close(struct net_device *dev)
{
	struct netfront_info *np = netdev_priv(dev);
	unsigned int num_queues = dev->real_num_tx_queues;
	unsigned int num_queues = np->queues ? dev->real_num_tx_queues : 0;
	unsigned int i;
	struct netfront_queue *queue;
	netif_tx_stop_all_queues(np->netdev);
@@ -882,6 +882,9 @@ static void xennet_destroy_queues(struct netfront_info *info)
{
	unsigned int i;

	if (!info->queues)
		return;

	for (i = 0; i < info->netdev->real_num_tx_queues; i++) {
		struct netfront_queue *queue = &info->queues[i];