[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-4.2-testing] xen: fix error handling of guest_physmap_mark_populate_on_demand()
# HG changeset patch # User Jan Beulich <jbeulich@xxxxxxxx> # Date 1354644168 0 # Node ID 09a48c5da6368ac61bdba5ee09253c2b20d7b577 # Parent 83ab3cd0f8e44ad588932aba93d3b5f92a888a08 xen: fix error handling of guest_physmap_mark_populate_on_demand() The only user of the "out" label bypasses a necessary unlock, thus enabling the caller to lock up Xen. Also, the function was never meant to be called by a guest for itself, so rather than inspecting the code paths in depth for potential other problems this might cause, and adjusting e.g. the non-guest printk() in the above error path, just disallow the guest access to it. Finally, the printk() (considering its potential of spamming the log, the more that it's not using XENLOG_GUEST), is being converted to P2M_DEBUG(), as debugging is what it apparently was added for in the first place. This is XSA-30 / CVE-2012-5514. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Committed-by: Ian Jackson <ian.jackson.citrix.com> --- diff -r 83ab3cd0f8e4 -r 09a48c5da636 xen/arch/x86/mm/p2m-pod.c --- a/xen/arch/x86/mm/p2m-pod.c Tue Dec 04 18:02:44 2012 +0000 +++ b/xen/arch/x86/mm/p2m-pod.c Tue Dec 04 18:02:48 2012 +0000 @@ -1117,6 +1117,9 @@ guest_physmap_mark_populate_on_demand(st mfn_t omfn; int rc = 0; + if ( !IS_PRIV_FOR(current->domain, d) ) + return -EPERM; + if ( !paging_mode_translate(d) ) return -EINVAL; @@ -1135,8 +1138,7 @@ guest_physmap_mark_populate_on_demand(st omfn = p2m->get_entry(p2m, gfn + i, &ot, &a, 0, NULL); if ( p2m_is_ram(ot) ) { - printk("%s: gfn_to_mfn returned type %d!\n", - __func__, ot); + P2M_DEBUG("gfn_to_mfn returned type %d!\n", ot); rc = -EBUSY; goto out; } @@ -1160,9 +1162,9 @@ guest_physmap_mark_populate_on_demand(st pod_unlock(p2m); } +out: gfn_unlock(p2m, gfn, order); -out: return rc; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |