Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1529477imu; Thu, 13 Dec 2018 17:29:23 -0800 (PST) X-Google-Smtp-Source: AFSGD/VFg+Cfhslwpid40m99GAu1p1SXjVqfDMI7ov47n5TWTi+OtvlWcGBzYvTBlMMot5lTo3gb X-Received: by 2002:a62:6a88:: with SMTP id f130mr973508pfc.201.1544750963127; Thu, 13 Dec 2018 17:29:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544750963; cv=none; d=google.com; s=arc-20160816; b=SlEJNAFER/rWPC8/Kwufyqlm1M2fZ1tSppjApZwqd7ok6JbSdXFsqS6zRreMTGtohq RqWnDNIiYmNENepcERNa55xyS/568jFvKrRu5R5US5RHh1l1A6ZI8Dhe1zLY/TaREj0r vk+jkg5yxeBn47z8mtp0FJuEkU1idElF8bKf3H4Q+pwb4EoFY94sBsiBeT7XnF/yyTMJ JCRWP6AXUmTGPPkzxoe5ppfwfK0SmjkVkb2fresDIkEq3GeykJjMOrXfTX78U/NdQuzE a+ajhwX0ot3YGNDHGOGbC4BIvdT1x2t0uRuidrhhotZeuYyhCJ1Ga887NarNnezEPVN2 Y7CQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=z1hk0P2WxEUT3U16Dn47hZc3DZ0EzDZlziBCcNUx7h8=; b=Buz1/tTZvkbB57tl6TaJKK2z5m4rImTDpD/T96pj/SwEMR5FcFXu8WZeFuSwTXt7Lj djDOzWjEsu6Er5UPpNhWTy/aip6WnzBypDAcccUEfbBa8IPX1TnF5/WWYn2IEjcKuLey LXucLWBi3zJ7vnD1hs04uW8tXcba5dtaBUIznSJSEhT41BmstYdUlDX8uyMdwZJgaVBd /Kt5vH7lqR+sw0/1k7arUlK684X3mMSFk2B+UThJc5VuZCPTMR6KDOnRr7fezq4aI2qd LBY1JZbThxUIi39PdEPnM3WQkYnrb0kyX0o2h8qBqDySEVvHiFzxk1ER3FhBGxBDyrFf iNEg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k11si2773474plt.68.2018.12.13.17.29.08; Thu, 13 Dec 2018 17:29:23 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729691AbeLNB1Q (ORCPT + 99 others); Thu, 13 Dec 2018 20:27:16 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33992 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729657AbeLNB1N (ORCPT ); Thu, 13 Dec 2018 20:27:13 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D52A1308403A; Fri, 14 Dec 2018 01:27:12 +0000 (UTC) Received: from malachite.bss.redhat.com (dhcp-10-20-1-11.bss.redhat.com [10.20.1.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id 59CCB6012B; Fri, 14 Dec 2018 01:27:11 +0000 (UTC) From: Lyude Paul To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: Daniel Vetter , Dave Airlie , Harry Wentland , Jerry Zuo , Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , linux-kernel@vger.kernel.org Subject: [WIP PATCH 14/15] drm/dp_mst: Check payload count in drm_dp_mst_atomic_check() Date: Thu, 13 Dec 2018 20:25:43 -0500 Message-Id: <20181214012604.13746-15-lyude@redhat.com> In-Reply-To: <20181214012604.13746-1-lyude@redhat.com> References: <20181214012604.13746-1-lyude@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Fri, 14 Dec 2018 01:27:13 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It occurred to me that we never actually check this! So let's start doing that. Signed-off-by: Lyude Paul Reviewed-by: Daniel Vetter --- drivers/gpu/drm/drm_dp_mst_topology.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index b9374c981a5b..ebffb834f5d6 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -3538,7 +3538,7 @@ drm_dp_mst_atomic_check_topology_state(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state) { struct drm_dp_vcpi_allocation *vcpi; - int avail_slots = 63, ret; + int avail_slots = 63, payload_count = 0, ret; /* There's no possible scenario where releasing VCPI or keeping it the * same would make the state invalid @@ -3575,6 +3575,13 @@ drm_dp_mst_atomic_check_topology_state(struct drm_dp_mst_topology_mgr *mgr, goto port_fail; } + if (++payload_count > mgr->max_payloads) { + DRM_DEBUG_ATOMIC("[MST MGR:%p] state %p has too many payloads (max=%d)\n", + mgr, mst_state, mgr->max_payloads); + ret = -EINVAL; + goto port_fail; + } + drm_dp_mst_topology_put_port(vcpi->port); } DRM_DEBUG_ATOMIC("[MST MGR:%p] mst state %p VCPI avail=%d used=%d\n", -- 2.19.2