]> xenbits.xensource.com Git - xen.git/commitdiff
memory: fix off-by-one in XSA-346 change
authorJan Beulich <jbeulich@suse.com>
Tue, 24 Nov 2020 13:16:08 +0000 (14:16 +0100)
committerJan Beulich <jbeulich@suse.com>
Tue, 24 Nov 2020 13:16:08 +0000 (14:16 +0100)
The comparison against ARRAY_SIZE() needs to be >= in order to avoid
overrunning the pages[] array.

This is XSA-355.

Fixes: 5777a3742d88 ("IOMMU: hold page ref until after deferred TLB flush")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
master commit: 9b156bcc3ffcc7949edd4460b718a241e87ae302
master date: 2020-11-24 14:01:31 +0100

xen/common/memory.c

index a4cf496f248b1c21bac2157bc87fdcabfe202518..aee4909b35690cf739458f65588c473a8b563d22 100644 (file)
@@ -850,7 +850,7 @@ int xenmem_add_to_physmap(struct domain *d, struct xen_add_to_physmap *xatp,
             ++extra.ppage;
 
         /* Check for continuation if it's not the last iteration. */
-        if ( (++done > ARRAY_SIZE(pages) && extra.ppage) ||
+        if ( (++done >= ARRAY_SIZE(pages) && extra.ppage) ||
              (xatp->size > done && hypercall_preempt_check()) )
         {
             rc = start + done;