[XEN] Fix XENVER_capabilities hypercall.

Passing an array to a function turns it into a pointer which confuses
safe_strcat.

Also fix 54->64 typo in ia64 tree.

Thanks to Alex Williamson for pointing out the problem.

Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
This commit is contained in:
Ian Campbell committed 2007-01-31 10:11:26 +00:00
1 parent 8a3405e402
commit ff0b3cef8d
4 files changed
+21 -21

No files matched your search

+5 -5
View File
@@ -545,21 +545,21 @@ printk("num_online_cpus=%d, max_cpus=%d\n",num_online_cpus(),max_cpus);
startup_cpu_idle_loop();
}
void arch_get_xen_caps(xen_capabilities_info_t info)
void arch_get_xen_caps(xen_capabilities_info_t *info)
{
int major = xen_major_version();
int minor = xen_minor_version();
char s[32];
info[0] = '\0';
(*info)[0] = '\0';
snprintf(s, sizeof(s), "xen-%d.%d-ia54 ", major, minor);
safe_strcat(info, s);
snprintf(s, sizeof(s), "xen-%d.%d-ia64 ", major, minor);
safe_strcat(*info, s);
if (vmx_enabled)
{
snprintf(s, sizeof(s), "hvm-%d.%d-ia64 ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
}
}
+2 -2
View File
@@ -444,8 +444,8 @@ void __init __start_xen_ppc(
}
extern void arch_get_xen_caps(xen_capabilities_info_t info);
void arch_get_xen_caps(xen_capabilities_info_t info)
extern void arch_get_xen_caps(xen_capabilities_info_t *info);
void arch_get_xen_caps(xen_capabilities_info_t *info)
{
}
+12 -12
View File
@@ -800,52 +800,52 @@ void __init __start_xen(multiboot_info_t *mbi)
startup_cpu_idle_loop();
}
void arch_get_xen_caps(xen_capabilities_info_t info)
void arch_get_xen_caps(xen_capabilities_info_t *info)
{
int major = xen_major_version();
int minor = xen_minor_version();
char s[32];
info[0] = '\0';
(*info)[0] = '\0';
#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE)
snprintf(s, sizeof(s), "xen-%d.%d-x86_32 ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
if ( hvm_enabled )
{
snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
}
#elif defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
if ( hvm_enabled )
{
snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
snprintf(s, sizeof(s), "hvm-%d.%d-x86_32p ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
}
#elif defined(CONFIG_X86_64)
snprintf(s, sizeof(s), "xen-%d.%d-x86_64 ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
#ifdef CONFIG_COMPAT
snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
#endif
if ( hvm_enabled )
{
snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
snprintf(s, sizeof(s), "hvm-%d.%d-x86_32p ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
snprintf(s, sizeof(s), "hvm-%d.%d-x86_64 ", major, minor);
safe_strcat(info, s);
safe_strcat(*info, s);
}
#endif
+2 -2
View File
@@ -162,10 +162,10 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE(void) arg)
case XENVER_capabilities:
{
xen_capabilities_info_t info;
extern void arch_get_xen_caps(xen_capabilities_info_t info);
extern void arch_get_xen_caps(xen_capabilities_info_t *info);
memset(info, 0, sizeof(info));
arch_get_xen_caps(info);
arch_get_xen_caps(&info);
if ( copy_to_guest(arg, (char *)info, sizeof(info)) )
return -EFAULT;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.