On Wed, Jan 9, 2013 at 11:12 AM, David Woodhouse <dw...@infradead.org> wrote:
> We're supposed to zero everything in the kernel bootparams that we don't
> explicitly initialise, other than the setup_header from 0x1f1 onwards
> for a precisely defined length, which is copied from the bzImage.
>
> We're *not* supposed to just pass the garbage that we happened to find
> in the bzImage file surrounding the setup_header.
>
> While we're at it, fix the checks for relocatable kernel. Boot proto
> 2.05 just means that the relocatable_kernel field is present in the
> header. We should *also* check that it's actually set.

Can you make this a separate patch?

> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: David Woodhouse <david.woodho...@intel.com>
>
> diff --git a/edk2/OvmfPkg/Library/LoadLinuxLib/Linux.c 
> b/edk2/OvmfPkg/Library/LoadLinuxLib/Linux.c
> index 96c985b..ebf14b6 100644
> --- a/edk2/OvmfPkg/Library/LoadLinuxLib/Linux.c
> +++ b/edk2/OvmfPkg/Library/LoadLinuxLib/Linux.c
> @@ -47,6 +47,7 @@ LoadLinuxCheckKernelSetup (
>    )
>  {
>    struct boot_params        *Bp;
> +  UINTN                     SetupEnd;
>
>    if (KernelSetup == NULL) {
>      return EFI_INVALID_PARAMETER;
> @@ -60,12 +61,21 @@ LoadLinuxCheckKernelSetup (
>
>    if ((Bp->hdr.signature != 0xAA55) || // Check boot sector signature
>        (Bp->hdr.header != SETUP_HDR) ||
> -      (Bp->hdr.version < 0x205)        // We only support relocatable kernels
> +      (Bp->hdr.version < 0x205) || // We only support relocatable kernels
> +      (!Bp->hdr.relocatable_kernel)
>       ) {
>      return EFI_UNSUPPORTED;
> -  } else {
> -    return EFI_SUCCESS;
>    }
> +
> +  SetupEnd = 0x202 + (Bp->hdr.jump & 0xff);
> +  if (SetupEnd > KernelSetupSize) {
> +    return EFI_UNSUPPORTED;
> +  }
> +
> +  // Clear all but the setup_header
> +  SetMem (KernelSetup, 0x1f1, 0);
> +  SetMem (((UINT8 *)KernelSetup) + SetupEnd, KernelSetupSize - SetupEnd, 0);
> +  return EFI_SUCCESS;

I think this part belongs in SetupLinuxBootParams instead.

-Jordan

------------------------------------------------------------------------------
Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery
and much more. Keep your Java skills current with LearnJavaNow -
200+ hours of step-by-step video tutorials by Java experts.
SALE $49.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122612 
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to