[SeaBIOS] [Qemu-devel] [PATCH 5/6] load_linux: report open kernel file & its size error

Blue Swirl blauwirbel at gmail.com
Mon Feb 4 19:20:44 CET 2013


On Mon, Feb 4, 2013 at 2:27 AM, liguang <lig.fnst at cn.fujitsu.com> wrote:
> Signed-off-by: liguang <lig.fnst at cn.fujitsu.com>
> ---
>  hw/pc.c |   14 +++++++++++---
>  1 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/hw/pc.c b/hw/pc.c
> index 01d00f6..0ccd775 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -652,12 +652,20 @@ static void load_linux(void *fw_cfg,
>      char *vmode;
>
>      /* Align to 16 bytes as a paranoia measure */
> -    cmdline_size = (strlen(kernel_cmdline)+16) & ~15;
> +    cmdline_size = (strlen(kernel_cmdline)+16) & ~0xf;

Here 15 is 16 - 1, so 0xf seems out of place. I'd use QEMU_ALIGN_UP().

If you touch the line, please add spaces around '+'.

>
>      /* load the kernel header */
>      f = fopen(kernel_filename, "rb");
> -    if (!f || !(kernel_size = get_file_size(f)) ||
> -        fread(header, 1, MIN(ARRAY_SIZE(header), kernel_size), f) !=
> +    if (!f) {
> +        fprintf(stderr, "can't open kernel image file\n");

The error message from strerror(errno) would be interesting.

> +        exit(1);
> +    }
> +    kernel_size = get_file_size(f);
> +    if (kernel_size <= 0) {
> +        fprintf(stderr, "can't get size of kernel image file\n");
> +        exit(1);
> +    }
> +    if (fread(header, 1, MIN(ARRAY_SIZE(header), kernel_size), f) !=
>          MIN(ARRAY_SIZE(header), kernel_size)) {
>          fprintf(stderr, "qemu: could not load kernel '%s': %s\n",
>                  kernel_filename, strerror(errno));
> --
> 1.7.2.5
>
>



More information about the SeaBIOS mailing list