Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp963019pxb; Wed, 6 Apr 2022 05:26:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy8DyOhCeH+AOuFrIQHJS6BNF0rQ2msbIQLoCijYCYAasuXP3DqNLB0JlBv75W6seaplxDp X-Received: by 2002:a17:902:e84d:b0:155:d31c:5c93 with SMTP id t13-20020a170902e84d00b00155d31c5c93mr8372441plg.103.1649248010772; Wed, 06 Apr 2022 05:26:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649248010; cv=none; d=google.com; s=arc-20160816; b=bN1aSoYZ6QusFFRDuGJtE9o1LbdVZs2iftE0BiS+6G/OICV+ynPseYoCKslLtN2IOG pcgNrYExvegd3HcIXt6DOMvb3ImrPZJlOakc/pM0pcrYMcfBtcemIvjPjCFVPtP0zI80 YVsiB8/zi1yY9OcXw0/UEeTf6YS47q/CnLi3fACzKJyeUFACz9ireCZag391aB9CvyAl m++UzXARQGqq75t/RIL1PpnPDPvYzVIZ5HHoPQ0X9wS/LYoG6bXQ2NMFaOuj/qqw2+UI 4BsT22fkhQCQmCvDNVBRRuWSWLhXdoCYtfBvPIhnqgdS0Ojsi4ufpPoCU+4kvc8I3zau bT/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=n4c/YaZrYP6zV/qA9dNQKxVz9radyVP2mRgAeJ+LcfM=; b=TEk4aqYEdqpH1BkiYNKX+sO72aDm2y/R2I10t3rIUFIyOXZ8kP8UZwbHr1B6Qeu7KE qjjWm5ANgKegdu3cjq0ETuEHDbTyuTUHDuDl674HHIz7DJP1lmJJWqN5i8s59mlkVTl5 hzHCEl2NnjElQ7lo0KnIIyfQlsf5+J8OBy+vmTjkKrRcohrC1TUUi1pRVOfS/1K/x4Vo o99yxuY2PLSRcu84QXW9hIk4c+hDhWyqofhTTFWoIYUxW5AYM1X8EuxBjghzE3bW1sxA p5osY/AJA5rqLTOvKR/u23Qu93JiQzcu58LlqVSIatlo9466HDnSn6TXQc3ZfpYlVELg G0UA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wl1HRdf2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id b13-20020a63714d000000b003816043efe9si18233547pgn.478.2022.04.06.05.26.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 05:26:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wl1HRdf2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 2CE136EB570; Wed, 6 Apr 2022 04:37:09 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231186AbiDEWNa (ORCPT + 99 others); Tue, 5 Apr 2022 18:13:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60904 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356216AbiDEKXa (ORCPT ); Tue, 5 Apr 2022 06:23:30 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE0E3BAB87; Tue, 5 Apr 2022 03:07:50 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 6757AB81C88; Tue, 5 Apr 2022 10:07:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D1EA2C385A1; Tue, 5 Apr 2022 10:07:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649153268; bh=5SKEbDrLT6+O1PlKgj+zrudt8PadU0+bYVvcmroswKE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wl1HRdf2VkrSjNrSj//IE136964rDpZFCpYYzHMkoO0ykx80IaUPFaIODYSeCzsJF 74S/Qkb4c0q5qKJ2TMQSJQnwKybyBRO/DnlowTxOaMG4h8gw8WnFlOUOTyOVEDlmjH JIyhM/hp5nQi+sjiwvpAaiwAvHullvmCGgpVCSQ0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Lucas De Marchi , Jani Nikula Subject: [PATCH 5.10 124/599] drm/i915/opregion: check port number bounds for SWSCI display power state Date: Tue, 5 Apr 2022 09:26:58 +0200 Message-Id: <20220405070302.527802109@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070258.802373272@linuxfoundation.org> References: <20220405070258.802373272@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jani Nikula commit 24a644ebbfd3b13cda702f98907f9dd123e34bf9 upstream. The mapping from enum port to whatever port numbering scheme is used by the SWSCI Display Power State Notification is odd, and the memory of it has faded. In any case, the parameter only has space for ports numbered [0..4], and UBSAN reports bit shift beyond it when the platform has port F or more. Since the SWSCI functionality is supposed to be obsolete for new platforms (i.e. ones that might have port F or more), just bail out early if the mapped and mangled port number is beyond what the Display Power State Notification can support. Fixes: 9c4b0a683193 ("drm/i915: add opregion function to notify bios of encoder enable/disable") Cc: # v3.13+ Cc: Ville Syrjälä Cc: Lucas De Marchi Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/4800 Signed-off-by: Jani Nikula Reviewed-by: Ville Syrjälä Link: https://patchwork.freedesktop.org/patch/msgid/cc363f42d6b5a5932b6d218fefcc8bdfb15dbbe5.1644489329.git.jani.nikula@intel.com Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/i915/display/intel_opregion.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) --- a/drivers/gpu/drm/i915/display/intel_opregion.c +++ b/drivers/gpu/drm/i915/display/intel_opregion.c @@ -376,6 +376,21 @@ int intel_opregion_notify_encoder(struct return -EINVAL; } + /* + * The port numbering and mapping here is bizarre. The now-obsolete + * swsci spec supports ports numbered [0..4]. Port E is handled as a + * special case, but port F and beyond are not. The functionality is + * supposed to be obsolete for new platforms. Just bail out if the port + * number is out of bounds after mapping. + */ + if (port > 4) { + drm_dbg_kms(&dev_priv->drm, + "[ENCODER:%d:%s] port %c (index %u) out of bounds for display power state notification\n", + intel_encoder->base.base.id, intel_encoder->base.name, + port_name(intel_encoder->port), port); + return -EINVAL; + } + if (!enable) parm |= 4 << 8;