On Tue, 28 Jun 2022 at 11:48, Dimitrije Pavlov <dimitrije.pav...@arm.com> wrote:
>
> Ensure that the PixelInformation field of the
> EFI_GRAPHICS_OUTPUT_MODE_INFORMATION structure is zeroed out in
> EFI_GRAPHICS_OUTPUT_PROTOCOL.QueryMode() and
> EFI_GRAPHICS_OUTPUT_PROTOCOL.SetMode() when PixelFormat is
> PixelBlueGreenRedReserved8BitPerColor.
>
> According to UEFI 2.9 Section 12.9, PixelInformation field of the
> EFI_GRAPHICS_OUTPUT_MODE_INFORMATION structure is valid only if
> PixelFormat is PixelBitMask. This means that firmware is not required
> to fill out the PixelInformation field for other PixelFormat types,
> which implies that the QemuVideoDxe implementation is technically
> correct.
>
> However, not zeroing out those fields will leak the contents of the
> memory returned by the memory allocator, so it is better to explicitly
> set them to zero.
>
> In addition, the SCT test suite relies on PixelInformation always
> having a consistent value, which causes failures.
>
> Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org>
> Cc: Jiewen Yao <jiewen....@intel.com>
> Cc: Jordan Justen <jordan.l.jus...@intel.com>
> Cc: Gerd Hoffmann <kra...@redhat.com>
> Cc: Jeff Booher-Kaeding <jeff.booher-kaed...@arm.com>
> Cc: Samer El-Haj-Mahmoud <samer.el-haj-mahm...@arm.com>
> Cc: Sunny Wang <sunny.w...@arm.com>
> Cc: Jeremy Linton <jeremy.lin...@arm.com>
>
> Signed-off-by: Dimitrije Pavlov <dimitrije.pav...@arm.com>
> ---
>  OvmfPkg/QemuVideoDxe/Gop.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/OvmfPkg/QemuVideoDxe/Gop.c b/OvmfPkg/QemuVideoDxe/Gop.c
> index 0c4dea7fb6f2..7a9fe208c99c 100644
> --- a/OvmfPkg/QemuVideoDxe/Gop.c
> +++ b/OvmfPkg/QemuVideoDxe/Gop.c
> @@ -31,7 +31,14 @@ QemuVideoCompleteModeInfo (
>      Info->PixelInformation.ReservedMask  0;
>    } else if (ModeData->ColorDepth  32) {
>      DEBUG ((DEBUG_INFO, "PixelBlueGreenRedReserved8BitPerColor\n"));
> -    Info->PixelFormat  PixelBlueGreenRedReserved8BitPerColor;
> +    Info->PixelFormat                    
> PixelBlueGreenRedReserved8BitPerColor;
> +    Info->PixelInformation.RedMask       0;
> +    Info->PixelInformation.GreenMask     0;
> +    Info->PixelInformation.BlueMask      0;
> +    Info->PixelInformation.ReservedMask  0;

Is this valid C? Or is the patch corrupted by email?


> +  } else {
> +    DEBUG ((DEBUG_ERROR, "%a: Invalid ColorDepth %u", __FUNCTION__, 
> ModeData->ColorDepth));
> +    ASSERT (FALSE);
>    }
>
>    Info->PixelsPerScanLine  Info->HorizontalResolution;
> --
> 2.34.1
>
>
>
> ------------
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#90822): https://edk2.groups.io/g/devel/message/90822
> Mute This Topic: https://groups.io/mt/92050521/1131722
> Group Owner: devel+ow...@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [a...@kernel.org]
> ------------
>
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#91897): https://edk2.groups.io/g/devel/message/91897
Mute This Topic: https://groups.io/mt/92050521/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to