diff mbox

xsplice: Unmask (aka reinstall NMI handler) if we need to abort.

Message ID 1462975148-25450-1-git-send-email-konrad.wilk@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Konrad Rzeszutek Wilk May 11, 2016, 1:59 p.m. UTC
If we have to abort in xsplice_spin() we end following
the goto abort. But unfortunataly we neglected to unmask.
This patch fixes that.

Reported-by: Martin Pohlack <mpohlack@amazon.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

---
Cc: jbeulich@suse.com
Cc: <andrew.cooper3@citrix.com
Cc: ross.lagerwall@citrix.com
Cc: Martin Pohlack <mpohlack@amazon.com>

This has been since v6 posting. v5 posting used the
set_nmi_callback and only used it around the IRQ semaphore.
---
 xen/common/xsplice.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Andrew Cooper May 11, 2016, 2 p.m. UTC | #1
On 11/05/16 14:59, Konrad Rzeszutek Wilk wrote:
> If we have to abort in xsplice_spin() we end following
> the goto abort. But unfortunataly we neglected to unmask.
> This patch fixes that.
>
> Reported-by: Martin Pohlack <mpohlack@amazon.com>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Wei Liu May 11, 2016, 2:05 p.m. UTC | #2
On Wed, May 11, 2016 at 09:59:08AM -0400, Konrad Rzeszutek Wilk wrote:
> If we have to abort in xsplice_spin() we end following
> the goto abort. But unfortunataly we neglected to unmask.
> This patch fixes that.
> 
> Reported-by: Martin Pohlack <mpohlack@amazon.com>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> 

Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Release-acked-by: Wei Liu <wei.liu2@citrix.com>
diff mbox

Patch

diff --git a/xen/common/xsplice.c b/xen/common/xsplice.c
index 21b9ec0..b68875b 100644
--- a/xen/common/xsplice.c
+++ b/xen/common/xsplice.c
@@ -1262,9 +1262,10 @@  void check_for_xsplice_work(void)
             arch_xsplice_post_action();
             local_irq_restore(flags);
         }
-        arch_xsplice_unmask();
 
  abort:
+        arch_xsplice_unmask();
+
         per_cpu(work_to_do, cpu) = 0;
         xsplice_work.do_work = 0;