x86/ept: atomically modify entries in ept_next_level
authorRoger Pau Monné <roger.pau@citrix.com>
Tue, 7 Jul 2020 12:37:12 +0000 (14:37 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 7 Jul 2020 12:37:12 +0000 (14:37 +0200)
commitbc3d9f95d661372b059a5539ae6cb1e79435bb95
tree78a7b80b390469a19ab8b25cb621f3a225072d24
parent1104288186ee73a7f9bfa41cbaa5bb7611521028
x86/ept: atomically modify entries in ept_next_level

ept_next_level was passing a live PTE pointer to ept_set_middle_entry,
which was then modified without taking into account that the PTE could
be part of a live EPT table. This wasn't a security issue because the
pages returned by p2m_alloc_ptp are zeroed, so adding such an entry
before actually initializing it didn't allow a guest to access
physical memory addresses it wasn't supposed to access.

This is part of XSA-328.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/mm/p2m-ept.c