|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
[Xen-devel] [PATCH 09/11] xen/hvm kexec: unregister the watch of	the "de
 
The watch of the xenstore "device" node has to be unregistered during a
kexec reboot. Otherwise the kexec kernel will crash due to a memory
corruption because more than one watch is registered on that node.
v2:
 use kexec_is_loaded() function
Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
---
 drivers/xen/xenbus/xenbus_probe_frontend.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)
Index: linux-3.0/drivers/xen/xenbus/xenbus_probe_frontend.c
===================================================================
--- linux-3.0.orig/drivers/xen/xenbus/xenbus_probe_frontend.c
+++ linux-3.0/drivers/xen/xenbus/xenbus_probe_frontend.c
@@ -13,6 +13,8 @@
 #include <linux/kthread.h>
 #include <linux/mutex.h>
 #include <linux/io.h>
+#include <linux/kexec.h>
+#include <linux/syscore_ops.h>
 
 #include <asm/page.h>
 #include <asm/pgtable.h>
@@ -263,6 +265,18 @@ static int frontend_probe_and_watch(stru
        return NOTIFY_DONE;
 }
 
+static void xenbus_frontend_shutdown_watcher(void)
+{
+       if (!kexec_is_loaded())
+               return;
+
+       unregister_xenbus_watch(&fe_watch);
+}
+
+static struct syscore_ops xenbus_frontend_watcher_syscore_ops = {
+       .shutdown = xenbus_frontend_shutdown_watcher,
+};
+
 
 static int __init xenbus_probe_frontend_init(void)
 {
@@ -279,6 +293,7 @@ static int __init xenbus_probe_frontend_
                return err;
 
        register_xenstore_notifier(&xenstore_notifier);
+       register_syscore_ops(&xenbus_frontend_watcher_syscore_ops);
 
        return 0;
 }
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- [Xen-devel] [PATCH 04/11] xen/hvm kexec: unregister timer interrupt	during reboot, (continued)
- [Xen-devel] [PATCH 04/11] xen/hvm kexec: unregister timer interrupt	during reboot, Olaf Hering
 
- [Xen-devel] [PATCH 02/11] xen: remove BUG_ON from xen_teardown_timer, Olaf Hering
 
- [Xen-devel] [PATCH 08/11] xen/hvm kexec: unregister the watch of	the "backend" node during reboot, Olaf Hering
 
- [Xen-devel] [PATCH 07/11] xen/hvm kexec: unregister memory/target	watch in xen-balloon.c, Olaf Hering
 
- [Xen-devel] [PATCH 01/11] kexec: add kexec_is_loaded function, Olaf Hering
 
- [Xen-devel] [PATCH 10/11] xen kexec: reset device state to	Initializing during reboot, Olaf Hering
 
- [Xen-devel] [PATCH 11/11] xen/hvm kdump: reset PV devices in crash	kernel, Olaf Hering
 
- [Xen-devel] [PATCH 09/11] xen/hvm kexec: unregister the watch of	the "device" node during reboot,
Olaf Hering <=
 
- Re: [Xen-devel] [PATCH 00/11] [v2] misc changes for kexec in	pv-on-hvm guests, Keir Fraser
 
- Re: [Xen-devel] [PATCH 00/11] [v2] misc changes for kexec in	pv-on-hvm guests, Konrad Rzeszutek Wilk
 
 
 
 
 |  
  
 | 
    | 
  
  
    |   | 
    |