Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp598868ybz; Fri, 24 Apr 2020 06:09:23 -0700 (PDT) X-Google-Smtp-Source: APiQypISoatCutTA05wFPgXC/z/OW9852SWLJrQsb5YycBRrJ6hWUwJNPmb0+Ffl+yCiN0z+649J X-Received: by 2002:a05:6402:6c4:: with SMTP id n4mr6269790edy.368.1587733762956; Fri, 24 Apr 2020 06:09:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587733762; cv=none; d=google.com; s=arc-20160816; b=kk1W3Q4E8mVBBgj31eNyS3X1yfKhvSNu/hEuKgfeEefTk8+k6D4AvBSE4ToTam46+B vGQM1qfHPpog9Zu/fAaBY8mca/dpuQ9GTCSvNZNP6dBg3IluPv3mzzWIST34iZdNMud/ cYT7K8AzCkC9v2D+9Y+WhuW7wFMTp02EL+kva9jHodiTpFog3/B65XEwCcRX9Li8c4Lg 4570q048DDMHFthDPgGLfLT/A62gdy7Wq71z96sFD30xIlfnDKPRnX6Gm3h6JyODuo6u aCDxNE//7y3F+Qx0o9gNHFTVouxBj9v9vsmjg+Y0FiWpJKcqomQ1n14Dnr8cntGIw/iy uoAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=0aPaADEUYfWdWfTu1FWddqSiIMmX/lMQhfgzHsEbOhU=; b=zYM//l1SxjmrlR/1KLK5OhDiYRPkKOoQtget80yOA1DEF4+zu3sDug2q/6pd6cGWFq IsRHnQd6A2j1+u13MyviI+M8uVD/Tzbp7RxyveGM7qF4HLlX5Mv7fl+tKu8FyaWtkfBo VjYpUGOabysJ4MzWZzExbqylmFiYPBALuefkguKeOzG5mpgez5xT5QeqRs3qblQi2n/R F8QWuCxf5kOEHhKGVvB8Y1BVxB8HZMUsXQMLbCCN2qXwz3vSTImb5tQ5VZJ5/EJNVRE4 2e9pir/o0TaE66dt/ZbJ6lp+PtxkWmJO5nKCKAZueTAgFf/p5Et8Hbsr7Ym/AY8SAuf+ 0NhA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wefr3ado; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id di17si2951250edb.593.2020.04.24.06.08.52; Fri, 24 Apr 2020 06:09:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wefr3ado; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728057AbgDXNGm (ORCPT + 99 others); Fri, 24 Apr 2020 09:06:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:57164 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728022AbgDXNGl (ORCPT ); Fri, 24 Apr 2020 09:06:41 -0400 Received: from e123331-lin.home (amontpellier-657-1-18-247.w109-210.abo.wanadoo.fr [109.210.65.247]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DF0DE20776; Fri, 24 Apr 2020 13:06:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587733600; bh=StI4ED6o9F1wqPlrCb6bWEv9oUdCCzUkxo4rZKLV2/g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wefr3adoZ9gasbnXWH2zOPZSMYnHpfkG6TH0kQ0uAzVo3WW/HxLwyP1nHinKihfJT qkOrgjSnX3qyc2CRhNHWCaMLf8/NlnlLzukoKpwdVKPRKWVAsIYAV696tRGB3WRsiW tx+iYcA2lLvz4Niu17ASFqm6LRqq/1/o4A6vpVO8= From: Ard Biesheuvel To: linux-efi@vger.kernel.org, Ingo Molnar , Thomas Gleixner Cc: Ard Biesheuvel , linux-kernel@vger.kernel.org, Arvind Sankar , Atish Patra , Palmer Dabbelt , Zou Wei Subject: [PATCH 13/33] efi/gop: Remove unreachable code from setup_pixel_info Date: Fri, 24 Apr 2020 15:05:11 +0200 Message-Id: <20200424130531.30518-14-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200424130531.30518-1-ardb@kernel.org> References: <20200424130531.30518-1-ardb@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arvind Sankar pixel_format must be one of PIXEL_RGB_RESERVED_8BIT_PER_COLOR PIXEL_BGR_RESERVED_8BIT_PER_COLOR PIXEL_BIT_MASK since we skip PIXEL_BLT_ONLY when finding a gop. Remove the redundant code and add another check in find_gop to skip any pixel formats that we don't know about, in case a later version of the UEFI spec adds one. Reformat the code a little. Signed-off-by: Arvind Sankar Link: https://lore.kernel.org/r/20200320020028.1936003-10-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel --- drivers/firmware/efi/libstub/gop.c | 66 ++++++++++++------------------ 1 file changed, 26 insertions(+), 40 deletions(-) diff --git a/drivers/firmware/efi/libstub/gop.c b/drivers/firmware/efi/libstub/gop.c index 8bf424f35759..2d91699e3061 100644 --- a/drivers/firmware/efi/libstub/gop.c +++ b/drivers/firmware/efi/libstub/gop.c @@ -29,49 +29,34 @@ static void setup_pixel_info(struct screen_info *si, u32 pixels_per_scan_line, efi_pixel_bitmask_t pixel_info, int pixel_format) { - if (pixel_format == PIXEL_RGB_RESERVED_8BIT_PER_COLOR) { - si->lfb_depth = 32; - si->lfb_linelength = pixels_per_scan_line * 4; - si->red_size = 8; - si->red_pos = 0; - si->green_size = 8; - si->green_pos = 8; - si->blue_size = 8; - si->blue_pos = 16; - si->rsvd_size = 8; - si->rsvd_pos = 24; - } else if (pixel_format == PIXEL_BGR_RESERVED_8BIT_PER_COLOR) { - si->lfb_depth = 32; - si->lfb_linelength = pixels_per_scan_line * 4; - si->red_size = 8; - si->red_pos = 16; - si->green_size = 8; - si->green_pos = 8; - si->blue_size = 8; - si->blue_pos = 0; - si->rsvd_size = 8; - si->rsvd_pos = 24; - } else if (pixel_format == PIXEL_BIT_MASK) { - find_bits(pixel_info.red_mask, &si->red_pos, &si->red_size); - find_bits(pixel_info.green_mask, &si->green_pos, - &si->green_size); - find_bits(pixel_info.blue_mask, &si->blue_pos, &si->blue_size); - find_bits(pixel_info.reserved_mask, &si->rsvd_pos, - &si->rsvd_size); + if (pixel_format == PIXEL_BIT_MASK) { + find_bits(pixel_info.red_mask, + &si->red_pos, &si->red_size); + find_bits(pixel_info.green_mask, + &si->green_pos, &si->green_size); + find_bits(pixel_info.blue_mask, + &si->blue_pos, &si->blue_size); + find_bits(pixel_info.reserved_mask, + &si->rsvd_pos, &si->rsvd_size); si->lfb_depth = si->red_size + si->green_size + si->blue_size + si->rsvd_size; si->lfb_linelength = (pixels_per_scan_line * si->lfb_depth) / 8; } else { - si->lfb_depth = 4; - si->lfb_linelength = si->lfb_width / 2; - si->red_size = 0; - si->red_pos = 0; - si->green_size = 0; - si->green_pos = 0; - si->blue_size = 0; - si->blue_pos = 0; - si->rsvd_size = 0; - si->rsvd_pos = 0; + if (pixel_format == PIXEL_RGB_RESERVED_8BIT_PER_COLOR) { + si->red_pos = 0; + si->blue_pos = 16; + } else /* PIXEL_BGR_RESERVED_8BIT_PER_COLOR */ { + si->blue_pos = 0; + si->red_pos = 16; + } + + si->green_pos = 8; + si->rsvd_pos = 24; + si->red_size = si->green_size = + si->blue_size = si->rsvd_size = 8; + + si->lfb_depth = 32; + si->lfb_linelength = pixels_per_scan_line * 4; } } @@ -100,7 +85,8 @@ find_gop(efi_guid_t *proto, unsigned long size, void **handles) mode = efi_table_attr(gop, mode); info = efi_table_attr(mode, info); - if (info->pixel_format == PIXEL_BLT_ONLY) + if (info->pixel_format == PIXEL_BLT_ONLY || + info->pixel_format >= PIXEL_FORMAT_MAX) continue; /* -- 2.17.1