Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
xen.15650
5dbafb72-Arm-p2m-dont-check-p2m_get_root_pointe...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 5dbafb72-Arm-p2m-dont-check-p2m_get_root_pointer-ret-with-BUG_ON.patch of Package xen.15650
# Commit 31b4f4ab6634f85163656b470dffc6d974917853 # Date 2019-10-31 16:19:14 +0100 # Author Julien Grall <julien.grall@arm.com> # Committer Jan Beulich <jbeulich@suse.com> xen/arm: p2m: Don't check the return of p2m_get_root_pointer() with BUG_ON() It turns out that the BUG_ON() was actually reachable with well-crafted hypercalls. The BUG_ON() is here to prevent catch logical error, so crashing Xen is a bit over the top. While all the holes should now be fixed, it would be better to downgrade the BUG_ON() to something less fatal to prevent any more DoS. The BUG_ON() in p2m_get_entry() is now replaced by ASSERT_UNREACHABLE() to catch mistake in debug build and return INVALID_MFN for production build. The interface also requires to set page_order to give an idea of the size of "hole". So 'level' is now set so we report a hole of size of the an entry of the root page-table. This stays inline with what happen when the GFN is higher than p2m->max_mapped_gfn. The BUG_ON() in p2m_resolve_translation_fault() is now replaced by ASSERT_UNREACHABLE() to catch mistake in debug build and just report a fault for producion build. This is part of XSA-301. Reported-by: Julien Grall <Julien.Grall@arm.com> Signed-off-by: Julien Grall <julien.grall@arm.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -329,7 +329,12 @@ mfn_t p2m_get_entry(struct p2m_domain *p * the table should always be non-NULL because the gfn is below * p2m->max_mapped_gfn and the root table pages are always present. */ - BUG_ON(table == NULL); + if ( !table ) + { + ASSERT_UNREACHABLE(); + level = P2M_ROOT_LEVEL; + goto out; + } for ( level = P2M_ROOT_LEVEL; level < 3; level++ ) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor