[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xen-cvs
Subject:    [Xen-changelog] [xen master] x86/vMSI-X: write snoops should ignore hvm_mmio_internal() requests
From:       patchbot () xen ! org
Date:       2016-04-27 18:12:33
Message-ID: E1avTwv-0006rz-Ht () xenbits ! xenproject ! org
[Download RAW message or body]

commit 9772c480a71ad38cc2c342e4c2e78c2475de7268
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 26 16:53:36 2016 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 26 16:53:36 2016 +0200

    x86/vMSI-X: write snoops should ignore hvm_mmio_internal() requests
    
    Those aren't actual I/O requests (and hence are of no interest here
    anyway). Since they don't get copied into struct vcpu, looking at that
    copy reads whatever was left there. Use the state of the request to
    determine its validity.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
    Release-acked-by: Wei Liu <wei.liu2@citrix.com>
---
 xen/arch/x86/hvm/vmsi.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
index 805e560..53c24e5 100644
--- a/xen/arch/x86/hvm/vmsi.c
+++ b/xen/arch/x86/hvm/vmsi.c
@@ -349,6 +349,8 @@ static int msixtbl_range(struct vcpu *v, unsigned long addr)
     {
         const ioreq_t *r = &v->arch.hvm_vcpu.hvm_io.io_req;
 
+        if ( r->state != STATE_IOREQ_READY )
+            return 0;
         ASSERT(r->type == IOREQ_TYPE_COPY);
         if ( r->dir == IOREQ_WRITE && r->size == 4 && !r->data_is_ptr
              && !(r->data & PCI_MSIX_VECTOR_BITMASK) )
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xen.org
http://lists.xensource.com/xen-changelog
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic