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

[xen stable-4.17] x86/mm: replace bogus assertion in paging_log_dirty_op()



commit d9dbd85adbb9012a1535dfb6df1685b321bf1c09
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Tue May 23 14:53:39 2023 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue May 23 14:53:39 2023 +0200

    x86/mm: replace bogus assertion in paging_log_dirty_op()
    
    While I was the one to introduce it, I don't think it is correct: A
    bogus continuation call issued by a tool stack domain may find another
    continuation in progress. IOW we've been asserting caller controlled
    state (which is reachable only via a domctl), and the early (lock-less)
    check in paging_domctl() helps in a limited way only.
    
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    master commit: 0956aa2219745a198bb6a0a99e2108a3c09b280e
    master date: 2023-05-03 13:38:30 +0200
---
 xen/arch/x86/mm/paging.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c
index 308d44bce7..ae0340570d 100644
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -443,8 +443,8 @@ static int paging_log_dirty_op(struct domain *d,
               d->arch.paging.preempt.op != sc->op )
     {
         paging_unlock(d);
-        ASSERT(!resuming);
-        domain_unpause(d);
+        if ( !resuming )
+            domain_unpause(d);
         return -EBUSY;
     }
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.17



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.