Patch "xen-netfront: Fix NULL sring after live migration" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    xen-netfront: Fix NULL sring after live migration

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     xen-netfront-fix-null-sring-after-live-migration.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit a93e84abca951789f99b176535218d5e92b959fc
Author: Lin Liu <lin.liu@xxxxxxxxxx>
Date:   Fri Dec 2 08:52:48 2022 +0000

    xen-netfront: Fix NULL sring after live migration
    
    [ Upstream commit d50b7914fae04d840ce36491d22133070b18cca9 ]
    
    A NAPI is setup for each network sring to poll data to kernel
    The sring with source host is destroyed before live migration and
    new sring with target host is setup after live migration.
    The NAPI for the old sring is not deleted until setup new sring
    with target host after migration. With busy_poll/busy_read enabled,
    the NAPI can be polled before got deleted when resume VM.
    
    BUG: unable to handle kernel NULL pointer dereference at
    0000000000000008
    IP: xennet_poll+0xae/0xd20
    PGD 0 P4D 0
    Oops: 0000 [#1] SMP PTI
    Call Trace:
     finish_task_switch+0x71/0x230
     timerqueue_del+0x1d/0x40
     hrtimer_try_to_cancel+0xb5/0x110
     xennet_alloc_rx_buffers+0x2a0/0x2a0
     napi_busy_loop+0xdb/0x270
     sock_poll+0x87/0x90
     do_sys_poll+0x26f/0x580
     tracing_map_insert+0x1d4/0x2f0
     event_hist_trigger+0x14a/0x260
    
     finish_task_switch+0x71/0x230
     __schedule+0x256/0x890
     recalc_sigpending+0x1b/0x50
     xen_sched_clock+0x15/0x20
     __rb_reserve_next+0x12d/0x140
     ring_buffer_lock_reserve+0x123/0x3d0
     event_triggers_call+0x87/0xb0
     trace_event_buffer_commit+0x1c4/0x210
     xen_clocksource_get_cycles+0x15/0x20
     ktime_get_ts64+0x51/0xf0
     SyS_ppoll+0x160/0x1a0
     SyS_ppoll+0x160/0x1a0
     do_syscall_64+0x73/0x130
     entry_SYSCALL_64_after_hwframe+0x41/0xa6
    ...
    RIP: xennet_poll+0xae/0xd20 RSP: ffffb4f041933900
    CR2: 0000000000000008
    ---[ end trace f8601785b354351c ]---
    
    xen frontend should remove the NAPIs for the old srings before live
    migration as the bond srings are destroyed
    
    There is a tiny window between the srings are set to NULL and
    the NAPIs are disabled, It is safe as the NAPI threads are still
    frozen at that time
    
    Signed-off-by: Lin Liu <lin.liu@xxxxxxxxxx>
    Fixes: 4ec2411980d0 ([NET]: Do not check netif_running() and carrier state in ->poll())
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 810fa9968be7..9ae0903bc225 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1621,6 +1621,12 @@ static int netfront_resume(struct xenbus_device *dev)
 	netif_tx_unlock_bh(info->netdev);
 
 	xennet_disconnect_backend(info);
+
+	rtnl_lock();
+	if (info->queues)
+		xennet_destroy_queues(info);
+	rtnl_unlock();
+
 	return 0;
 }
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux