Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
xen.7653
xsa249.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xsa249.patch of Package xen.7653
From: Jan Beulich <jbeulich@suse.com> Subject: x86/shadow: fix refcount overflow check Commit c385d27079 ("x86 shadow: for multi-page shadows, explicitly track the first page") reduced the refcount width to 25, without adjusting the overflow check. Eliminate the disconnect by using a manifest constant. Interestingly, up to commit 047782fa01 ("Out-of-sync L1 shadows: OOS snapshot") the refcount was 27 bits wide, yet the check was already using 26. This is XSA-249. Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: George Dunlap <george.dunlap@citrix.com> Reviewed-by: Tim Deegan <tim@xen.org> --- v2: Simplify expression back to the style it was. Index: xen-4.5.5-testing/xen/arch/x86/mm/shadow/private.h =================================================================== --- xen-4.5.5-testing.orig/xen/arch/x86/mm/shadow/private.h +++ xen-4.5.5-testing/xen/arch/x86/mm/shadow/private.h @@ -524,7 +524,7 @@ static inline int sh_get_ref(struct vcpu x = sp->u.sh.count; nx = x + 1; - if ( unlikely(nx >= 1U<<26) ) + if ( unlikely(nx >= (1U << PAGE_SH_REFCOUNT_WIDTH)) ) { SHADOW_PRINTK("shadow ref overflow, gmfn=%lx smfn=%lx\n", __backpointer(sp), mfn_x(smfn)); Index: xen-4.5.5-testing/xen/include/asm-x86/mm.h =================================================================== --- xen-4.5.5-testing.orig/xen/include/asm-x86/mm.h +++ xen-4.5.5-testing/xen/include/asm-x86/mm.h @@ -77,7 +77,8 @@ struct page_info unsigned long type:5; /* What kind of shadow is this? */ unsigned long pinned:1; /* Is the shadow pinned? */ unsigned long head:1; /* Is this the first page of the shadow? */ - unsigned long count:25; /* Reference count */ +#define PAGE_SH_REFCOUNT_WIDTH 25 + unsigned long count:PAGE_SH_REFCOUNT_WIDTH; /* Reference count */ } sh; /* Page is on a free list: ((count_info & PGC_count_mask) == 0). */
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