[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [UNIKRAFT PATCH v2] lib/ukdebug: uk_asmdumpk(), uk_asmdumpn(): Stop decoding on errors



Hi,

Looks good, thanks.

— Felipe

Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>

On Mon, May 4, 2020 at 11:56 AM Simon Kuenzer <simon.kuenzer@xxxxxxxxx> wrote:
>
> Checks for errors that may occur during instruction decoding with
> libzydis.
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> ---
>  lib/ukdebug/asmdump.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/lib/ukdebug/asmdump.c b/lib/ukdebug/asmdump.c
> index f73b0d65..f860533c 100644
> --- a/lib/ukdebug/asmdump.c
> +++ b/lib/ukdebug/asmdump.c
> @@ -43,7 +43,7 @@
>
>  /**
>   * Disassemble <num_ins> instructions with zydis starting
> - * with instruction at <addr>
> + * with instruction at <instr>
>   */
>  static int _asmdump(struct out_dev *o,
>                    const void *instr, unsigned int count)
> @@ -76,7 +76,10 @@ static int _asmdump(struct out_dev *o,
>
>         while (count) {
>                 addr = ((__uptr) instr) + offset;
> -               ZydisDecoderDecodeBuffer(&dcr, (const void *) addr, 16, &ins);
> +               if (!ZYAN_SUCCESS(ZydisDecoderDecodeBuffer(&dcr,
> +                                                          (const void *) 
> addr,
> +                                                          16, &ins)))
> +                       break;
>                 ZydisFormatterFormatInstruction(&fmt, &ins, buf, sizeof(buf),
>                                                 addr);
>                 ret = outf(o, "%08"__PRIuptr" <+%d>: %hs\n", addr, offset, 
> buf);
> --
> 2.20.1
>
>



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.