From 3cfccd70992b3d2b739e3febfceb99fdf6283be0 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 15 Jul 2021 09:34:28 +0200 Subject: [PATCH] x86/mem-sharing: ensure consistent lock order in get_two_gfns() While the comment validly says "Sort by domain, if same domain by gfn", the implementation also included equal domain IDs in the first part of the check, thus rending the second part entirely dead and leaving deadlock potential when there's only a single domain involved. Signed-off-by: Jan Beulich Acked-by: Tamas K Lengyel master commit: 09af2d01a2fe6a0af08598bdfe12c9707f4d82ba master date: 2021-07-07 12:35:12 +0200 --- xen/include/asm-x86/p2m.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h index 8abae345e8..2883d8a2f0 100644 --- a/xen/include/asm-x86/p2m.h +++ b/xen/include/asm-x86/p2m.h @@ -552,7 +552,7 @@ do { \ dest ## _t = (source ## t) ?: &scratch_t; \ } while (0) - if ( (rd->domain_id <= ld->domain_id) || + if ( (rd->domain_id < ld->domain_id) || ((rd == ld) && (gfn_x(rgfn) <= gfn_x(lgfn))) ) { assign_pointers(first, r); -- 2.30.2