|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/pv: Deduplicate is_canonical_address() in do_set_segment_base()
commit 524f3fa35efd7a425e1033d2fa5c927f61224d67
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Tue Aug 12 12:48:06 2025 +0100
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Fri Dec 5 23:00:32 2025 +0000
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>
Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
---
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 7a37f16bf0..4c2abeb4ad 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:
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |