|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 5/6] microcode: delete microcode pointer and size from microcode_info
On Wed, Nov 28, 2018 at 01:34:15PM +0800, Chao Gao wrote:
> Microcode pointer and size is passed to other cpu to parse microcode
> locally. Now, parsing microcode is done on one CPU. Others just
> find a suitable microcode stored in microcode_cache.
>
> Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx>
> ---
> xen/arch/x86/microcode.c | 13 ++++++-------
> 1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/xen/arch/x86/microcode.c b/xen/arch/x86/microcode.c
> index cca7b2c..0b435f4 100644
> --- a/xen/arch/x86/microcode.c
> +++ b/xen/arch/x86/microcode.c
> @@ -190,9 +190,7 @@ DEFINE_PER_CPU(struct ucode_cpu_info, ucode_cpu_info);
>
> struct microcode_info {
> unsigned int cpu;
> - uint32_t buffer_size;
> int error;
> - char buffer[1];
> };
>
> static void __microcode_fini_cpu(unsigned int cpu)
> @@ -270,6 +268,7 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void)
> buf, unsigned long len)
> struct microcode_info *info;
> unsigned int cpu = smp_processor_id();
> struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
> + void * buffer;
>
> if ( len != (uint32_t)len )
> return -E2BIG;
> @@ -277,11 +276,12 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void)
> buf, unsigned long len)
> if ( microcode_ops == NULL )
> return -EINVAL;
>
> - info = xmalloc_bytes(sizeof(*info) + len);
> - if ( info == NULL )
> + info = xmalloc(struct microcode_info);
> + buffer = xmalloc_bytes(len);
> + if ( !info || !buffer )
You are again likely to leak memory with this construct.
Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |