lkml.org 
[lkml]   [2019]   [Dec]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 13/84] efi/gop: Return EFI_NOT_FOUND if there are no usable GOPs
    Date
    From: Arvind Sankar <nivedita@alum.mit.edu>

    [ Upstream commit 6fc3cec30dfeee7d3c5db8154016aff9d65503c5 ]

    If we don't find a usable instance of the Graphics Output Protocol
    (GOP) because none of them have a framebuffer (i.e. they were all
    PIXEL_BLT_ONLY), but all the EFI calls succeeded, we will return
    EFI_SUCCESS even though we didn't find a usable GOP.

    Fix this by explicitly returning EFI_NOT_FOUND if no usable GOPs are
    found, allowing the caller to probe for UGA instead.

    Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Bhupesh Sharma <bhsharma@redhat.com>
    Cc: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
    Cc: linux-efi@vger.kernel.org
    Link: https://lkml.kernel.org/r/20191206165542.31469-3-ardb@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/firmware/efi/libstub/gop.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    diff --git a/drivers/firmware/efi/libstub/gop.c b/drivers/firmware/efi/libstub/gop.c
    index 24c461dea7af..16ed61c023e8 100644
    --- a/drivers/firmware/efi/libstub/gop.c
    +++ b/drivers/firmware/efi/libstub/gop.c
    @@ -121,7 +121,7 @@ setup_gop32(efi_system_table_t *sys_table_arg, struct screen_info *si,
    u64 fb_base;
    struct efi_pixel_bitmask pixel_info;
    int pixel_format;
    - efi_status_t status = EFI_NOT_FOUND;
    + efi_status_t status;
    u32 *handles = (u32 *)(unsigned long)gop_handle;
    int i;

    @@ -177,7 +177,7 @@ setup_gop32(efi_system_table_t *sys_table_arg, struct screen_info *si,

    /* Did we find any GOPs? */
    if (!first_gop)
    - goto out;
    + return EFI_NOT_FOUND;

    /* EFI framebuffer */
    si->orig_video_isVGA = VIDEO_TYPE_EFI;
    @@ -199,7 +199,7 @@ setup_gop32(efi_system_table_t *sys_table_arg, struct screen_info *si,
    si->lfb_size = si->lfb_linelength * si->lfb_height;

    si->capabilities |= VIDEO_CAPABILITY_SKIP_QUIRKS;
    -out:
    +
    return status;
    }

    @@ -239,7 +239,7 @@ setup_gop64(efi_system_table_t *sys_table_arg, struct screen_info *si,
    u64 fb_base;
    struct efi_pixel_bitmask pixel_info;
    int pixel_format;
    - efi_status_t status = EFI_NOT_FOUND;
    + efi_status_t status;
    u64 *handles = (u64 *)(unsigned long)gop_handle;
    int i;

    @@ -295,7 +295,7 @@ setup_gop64(efi_system_table_t *sys_table_arg, struct screen_info *si,

    /* Did we find any GOPs? */
    if (!first_gop)
    - goto out;
    + return EFI_NOT_FOUND;

    /* EFI framebuffer */
    si->orig_video_isVGA = VIDEO_TYPE_EFI;
    @@ -317,7 +317,7 @@ setup_gop64(efi_system_table_t *sys_table_arg, struct screen_info *si,
    si->lfb_size = si->lfb_linelength * si->lfb_height;

    si->capabilities |= VIDEO_CAPABILITY_SKIP_QUIRKS;
    -out:
    +
    return status;
    }

    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-27 18:45    [W:5.403 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site