[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 15/23] x86/pv: Deduplicate is_canonical_address() in do_set_segment_base()
This is really a rearrangement to make adding FRED support easier. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> v2: * New There is a marginal code size improvement: add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-46 (-46) Function old new delta do_set_segment_base 496 450 -46 but it does get undone by the FRED support. --- xen/arch/x86/pv/misc-hypercalls.c | 32 ++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/xen/arch/x86/pv/misc-hypercalls.c b/xen/arch/x86/pv/misc-hypercalls.c index 7a37f16bf038..4c2abeb4add8 100644 --- a/xen/arch/x86/pv/misc-hypercalls.c +++ b/xen/arch/x86/pv/misc-hypercalls.c @@ -176,27 +176,29 @@ long do_set_segment_base(unsigned int which, unsigned long base) switch ( which ) { case SEGBASE_FS: - if ( is_canonical_address(base) ) - write_fs_base(base); - else + case SEGBASE_GS_USER: + case SEGBASE_GS_KERNEL: + if ( !is_canonical_address(base) ) + { ret = -EINVAL; - break; + break; + } - case SEGBASE_GS_USER: - if ( is_canonical_address(base) ) + switch ( which ) { - write_gs_shadow(base); + case SEGBASE_FS: + write_fs_base(base); + break; + + case SEGBASE_GS_USER: v->arch.pv.gs_base_user = base; - } - else - ret = -EINVAL; - break; + write_gs_shadow(base); + break; - case SEGBASE_GS_KERNEL: - if ( is_canonical_address(base) ) + case SEGBASE_GS_KERNEL: write_gs_base(base); - else - ret = -EINVAL; + break; + } break; case SEGBASE_GS_USER_SEL: -- 2.39.5
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |