[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v12 for-xen-4.5 01/20] common/symbols: Export hypervisor symbols to privileged guest
On 09/25/2014 03:28 PM, Boris Ostrovsky wrote: Export Xen's symbols as {<address><type><name>} triplet via new XENPF_get_symbol hypercall Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> Reviewed-by: Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxx> Tested-by: Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxx> For the XSM parts: Acked-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> One comment on the patch in general (outside the XSM parts): [...] diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c index 2162811..68bc6d9 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -23,6 +23,7 @@ #include <xen/cpu.h> #include <xen/pmstat.h> #include <xen/irq.h> +#include <xen/symbols.h> #include <asm/current.h> #include <public/platform.h> #include <acpi/cpufreq/processor_perf.h> @@ -601,6 +602,38 @@ ret_t do_platform_op(XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op) } break; + case XENPF_get_symbol: + { + static char name[KSYM_NAME_LEN + 1]; /* protected by xenpf_lock */ + XEN_GUEST_HANDLE(char) nameh; + uint32_t namelen, copylen; + + guest_from_compat_handle(nameh, op->u.symdata.name); + + ret = xensyms_read(&op->u.symdata.symnum, &op->u.symdata.type, + &op->u.symdata.address, name); + + namelen = strlen(name) + 1; + + if ( namelen > op->u.symdata.namelen ) + { + /* Caller's buffer is too small for the whole string */ + if ( op->u.symdata.namelen ) + name[op->u.symdata.namelen] = '\0'; I don't think this assignment is needed at all: name[copylen] is never copied to the guest and the buffer is not reused internally. + copylen = op->u.symdata.namelen; + } + else + copylen = namelen; + + op->u.symdata.namelen = namelen; + + if ( !ret && copy_to_guest(nameh, name, copylen) ) + ret = -EFAULT; + if ( !ret && __copy_field_to_guest(u_xenpf_op, op, u.symdata) ) + ret = -EFAULT; + } + break; + default: ret = -ENOSYS; break; [...] -- Daniel De Graaf National Security Agency _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |