From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH] make all (native) hypercalls consistently have "long" return type Date: Wed, 08 Aug 2012 17:05:08 +0100 Message-ID: <5022AA540200007800093AF6@nat28.tlf.novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__PartB081CF24.0__=" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel Cc: dgdegra@tycho.nsa.gov List-Id: xen-devel@lists.xenproject.org This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__PartB081CF24.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline for common and x86 ones at least, to address the problem of storing zero-extended values into the multicall result field otherwise. Reported-by: Daniel De Graaf Signed-off-by: Jan Beulich --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2973,7 +2973,7 @@ static inline void fixunmap_domain_page( #define fixunmap_domain_page(ptr) ((void)(ptr)) #endif =20 -int do_mmuext_op( +long do_mmuext_op( XEN_GUEST_HANDLE(mmuext_op_t) uops, unsigned int count, XEN_GUEST_HANDLE(uint) pdone, @@ -3437,7 +3437,7 @@ int do_mmuext_op( return rc; } =20 -int do_mmu_update( +long do_mmu_update( XEN_GUEST_HANDLE(mmu_update_t) ureqs, unsigned int count, XEN_GUEST_HANDLE(uint) pdone, @@ -4285,15 +4285,15 @@ static int __do_update_va_mapping( return rc; } =20 -int do_update_va_mapping(unsigned long va, u64 val64, - unsigned long flags) +long do_update_va_mapping(unsigned long va, u64 val64, + unsigned long flags) { return __do_update_va_mapping(va, val64, flags, current->domain); } =20 -int do_update_va_mapping_otherdomain(unsigned long va, u64 val64, - unsigned long flags, - domid_t domid) +long do_update_va_mapping_otherdomain(unsigned long va, u64 val64, + unsigned long flags, + domid_t domid) { struct domain *pg_owner; int rc; --- a/xen/common/compat/xenoprof.c +++ b/xen/common/compat/xenoprof.c @@ -5,6 +5,7 @@ #include =20 #define COMPAT +#define ret_t int =20 #define do_xenoprof_op compat_xenoprof_op =20 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -845,8 +845,8 @@ static int kexec_exec(XEN_GUEST_HANDLE(v return -EINVAL; /* never reached */ } =20 -int do_kexec_op_internal(unsigned long op, XEN_GUEST_HANDLE(void) uarg, - int compat) +static int do_kexec_op_internal(unsigned long op, XEN_GUEST_HANDLE(void) = uarg, + bool_t compat) { unsigned long flags; int ret =3D -EINVAL; --- a/xen/common/xenoprof.c +++ b/xen/common/xenoprof.c @@ -607,6 +607,8 @@ static int xenoprof_op_init(XEN_GUEST_HA return (copy_to_guest(arg, &xenoprof_init, 1) ? -EFAULT : 0); } =20 +#define ret_t long + #endif /* !COMPAT */ =20 static int xenoprof_op_get_buffer(XEN_GUEST_HANDLE(void) arg) @@ -660,7 +662,7 @@ static int xenoprof_op_get_buffer(XEN_GU || (op =3D=3D XENOPROF_disable_virq) \ || (op =3D=3D XENOPROF_get_buffer)) =20 -int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) +ret_t do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) { int ret =3D 0; =20 @@ -904,6 +906,7 @@ int do_xenoprof_op(int op, XEN_GUEST_HAN } =20 #if defined(CONFIG_COMPAT) && !defined(COMPAT) +#undef ret_t #include "compat/xenoprof.c" #endif =20 --- a/xen/include/asm-x86/hypercall.h +++ b/xen/include/asm-x86/hypercall.h @@ -24,7 +24,7 @@ extern long do_set_trap_table( XEN_GUEST_HANDLE(const_trap_info_t) traps); =20 -extern int +extern long do_mmu_update( XEN_GUEST_HANDLE(mmu_update_t) ureqs, unsigned int count, @@ -62,7 +62,7 @@ do_update_descriptor( extern long do_mca(XEN_GUEST_HANDLE(xen_mc_t) u_xen_mc); =20 -extern int +extern long do_update_va_mapping( unsigned long va, u64 val64, @@ -72,14 +72,14 @@ extern long do_physdev_op( int cmd, XEN_GUEST_HANDLE(void) arg); =20 -extern int +extern long do_update_va_mapping_otherdomain( unsigned long va, u64 val64, unsigned long flags, domid_t domid); =20 -extern int +extern long do_mmuext_op( XEN_GUEST_HANDLE(mmuext_op_t) uops, unsigned int count, @@ -90,10 +90,6 @@ extern unsigned long do_iret( void); =20 -extern int -do_kexec( - unsigned long op, unsigned arg1, XEN_GUEST_HANDLE(void) uarg); - #ifdef __x86_64__ =20 extern long --- a/xen/include/xen/hypercall.h +++ b/xen/include/xen/hypercall.h @@ -137,7 +137,7 @@ extern long do_tmem_op( XEN_GUEST_HANDLE(tmem_op_t) uops); =20 -extern int +extern long do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg); =20 #ifdef CONFIG_COMPAT --=__PartB081CF24.0__= Content-Type: text/plain; name="hypercall-return-long.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="hypercall-return-long.patch" make all (native) hypercalls consistently have "long" return type=0A=0Afor = common and x86 ones at least, to address the problem of storing=0Azero-exte= nded values into the multicall result field otherwise.=0A=0AReported-by: = Daniel De Graaf =0ASigned-off-by: Jan Beulich = =0A=0A--- a/xen/arch/x86/mm.c=0A+++ b/xen/arch/x86/mm.c= =0A@@ -2973,7 +2973,7 @@ static inline void fixunmap_domain_page(=0A = #define fixunmap_domain_page(ptr) ((void)(ptr))=0A #endif=0A =0A-int = do_mmuext_op(=0A+long do_mmuext_op(=0A XEN_GUEST_HANDLE(mmuext_op_t) = uops,=0A unsigned int count,=0A XEN_GUEST_HANDLE(uint) pdone,=0A@@ = -3437,7 +3437,7 @@ int do_mmuext_op(=0A return rc;=0A }=0A =0A-int = do_mmu_update(=0A+long do_mmu_update(=0A XEN_GUEST_HANDLE(mmu_update_t)= ureqs,=0A unsigned int count,=0A XEN_GUEST_HANDLE(uint) pdone,=0A@= @ -4285,15 +4285,15 @@ static int __do_update_va_mapping(=0A return = rc;=0A }=0A =0A-int do_update_va_mapping(unsigned long va, u64 val64,=0A- = unsigned long flags)=0A+long do_update_va_mapping(un= signed long va, u64 val64,=0A+ unsigned long = flags)=0A {=0A return __do_update_va_mapping(va, val64, flags, = current->domain);=0A }=0A =0A-int do_update_va_mapping_otherdomain(unsigned= long va, u64 val64,=0A- unsigned long = flags,=0A- domid_t domid)=0A+long = do_update_va_mapping_otherdomain(unsigned long va, u64 val64,=0A+ = unsigned long flags,=0A+ = domid_t domid)=0A {=0A struct domain *pg_owner;=0A = int rc;=0A--- a/xen/common/compat/xenoprof.c=0A+++ b/xen/common/compat/xeno= prof.c=0A@@ -5,6 +5,7 @@=0A #include =0A =0A #define = COMPAT=0A+#define ret_t int=0A =0A #define do_xenoprof_op compat_xenoprof_o= p=0A =0A--- a/xen/common/kexec.c=0A+++ b/xen/common/kexec.c=0A@@ -845,8 = +845,8 @@ static int kexec_exec(XEN_GUEST_HANDLE(v=0A return -EINVAL; = /* never reached */=0A }=0A =0A-int do_kexec_op_internal(unsigned long op, = XEN_GUEST_HANDLE(void) uarg,=0A- int compat)=0A+s= tatic int do_kexec_op_internal(unsigned long op, XEN_GUEST_HANDLE(void) = uarg,=0A+ bool_t compat)=0A {=0A = unsigned long flags;=0A int ret =3D -EINVAL;=0A--- a/xen/common/xenopro= f.c=0A+++ b/xen/common/xenoprof.c=0A@@ -607,6 +607,8 @@ static int = xenoprof_op_init(XEN_GUEST_HA=0A return (copy_to_guest(arg, &xenoprof_i= nit, 1) ? -EFAULT : 0);=0A }=0A =0A+#define ret_t long=0A+=0A #endif /* = !COMPAT */=0A =0A static int xenoprof_op_get_buffer(XEN_GUEST_HANDLE(void) = arg)=0A@@ -660,7 +662,7 @@ static int xenoprof_op_get_buffer(XEN_GU=0A = || (op =3D=3D XENOPROF_disable_virq) \=0A = || (op =3D=3D XENOPROF_get_buffer))=0A =0A-int do_xenoprof_op(int = op, XEN_GUEST_HANDLE(void) arg)=0A+ret_t do_xenoprof_op(int op, XEN_GUEST_H= ANDLE(void) arg)=0A {=0A int ret =3D 0;=0A =0A@@ -904,6 +906,7 @@ = int do_xenoprof_op(int op, XEN_GUEST_HAN=0A }=0A =0A #if defined(CONFIG_COM= PAT) && !defined(COMPAT)=0A+#undef ret_t=0A #include "compat/xenoprof.c"=0A= #endif=0A =0A--- a/xen/include/asm-x86/hypercall.h=0A+++ b/xen/include/asm= -x86/hypercall.h=0A@@ -24,7 +24,7 @@ extern long=0A do_set_trap_table(=0A = XEN_GUEST_HANDLE(const_trap_info_t) traps);=0A =0A-extern int=0A+extern = long=0A do_mmu_update(=0A XEN_GUEST_HANDLE(mmu_update_t) ureqs,=0A = unsigned int count,=0A@@ -62,7 +62,7 @@ do_update_descriptor(=0A extern = long=0A do_mca(XEN_GUEST_HANDLE(xen_mc_t) u_xen_mc);=0A =0A-extern = int=0A+extern long=0A do_update_va_mapping(=0A unsigned long va,=0A = u64 val64,=0A@@ -72,14 +72,14 @@ extern long=0A do_physdev_op(=0A int = cmd, XEN_GUEST_HANDLE(void) arg);=0A =0A-extern int=0A+extern long=0A = do_update_va_mapping_otherdomain(=0A unsigned long va,=0A u64 = val64,=0A unsigned long flags,=0A domid_t domid);=0A =0A-extern = int=0A+extern long=0A do_mmuext_op(=0A XEN_GUEST_HANDLE(mmuext_op_t) = uops,=0A unsigned int count,=0A@@ -90,10 +90,6 @@ extern unsigned = long=0A do_iret(=0A void);=0A =0A-extern int=0A-do_kexec(=0A- = unsigned long op, unsigned arg1, XEN_GUEST_HANDLE(void) uarg);=0A-=0A = #ifdef __x86_64__=0A =0A extern long=0A--- a/xen/include/xen/hypercall.h=0A= +++ b/xen/include/xen/hypercall.h=0A@@ -137,7 +137,7 @@ extern long=0A = do_tmem_op(=0A XEN_GUEST_HANDLE(tmem_op_t) uops);=0A =0A-extern = int=0A+extern long=0A do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) = arg);=0A =0A #ifdef CONFIG_COMPAT=0A --=__PartB081CF24.0__= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --=__PartB081CF24.0__=--