From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 4.19 019/167] drm/atomic_helper: Disallow new modesets on unregistered connectors Date: Tue, 3 Sep 2019 12:22:51 -0400 Message-ID: <20190903162519.7136-19-sashal@kernel.org> References: <20190903162519.7136-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id B6FCD897C3 for ; Tue, 3 Sep 2019 16:25:54 +0000 (UTC) In-Reply-To: <20190903162519.7136-1-sashal@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin , Daniel Vetter , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KClsgVXBzdHJlYW0gY29tbWl0IDRk ODAyNzM5NzZiZjg4MGM0YmVkOTM1OWI4ZjJkNDU2NjMxNDBjODYgXQoKV2l0aCB0aGUgZXhjZXB0 aW9uIG9mIG1vZGVzZXRzIHdoaWNoIHdvdWxkIHN3aXRjaCB0aGUgRFBNUyBzdGF0ZSBvZiBhCmNv bm5lY3RvciBmcm9tIG9uIHRvIG9mZiwgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkaXNh bGxvdyBhbGwKbW9kZXNldHMgd2hpY2ggd291bGQgcmVzdWx0IGluIGVuYWJsaW5nIGEgbmV3IG1v bml0b3Igb3IgYSBuZXcgbW9kZQpjb25maWd1cmF0aW9uIG9uIGEgbW9uaXRvciBpZiB0aGUgY29u bmVjdG9yIGZvciB0aGUgZGlzcGxheSBpbiBxdWVzdGlvbgppcyBubyBsb25nZXIgcmVnaXN0ZXJl ZC4gVGhpcyBhbGxvd3MgdXMgdG8gc3RvcCB1c2Vyc3BhY2UgZnJvbSB0cnlpbmcgdG8KZW5hYmxl IG5ldyBkaXNwbGF5cyBvbiBjb25uZWN0b3JzIGZvciBhbiBNU1QgdG9wb2xvZ3kgdGhhdCB3ZXJl IGp1c3QKcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0sIHdpdGhvdXQgcHJldmVudGluZyB1c2Vyc3Bh Y2UgZnJvbSBkaXNhYmxpbmcKRFBNUyBvbiB0aG9zZSBjb25uZWN0b3JzLgoKQ2hhbmdlcyBzaW5j ZSB2NToKLSBGaXggdHlwbyBpbiBjb21tZW50LCBub3RoaW5nIGVsc2UKClNpZ25lZC1vZmYtYnk6 IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwpMaW5r OiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvbXNnaWQvMjAxODEwMDgy MzI0MzcuNTU3MS0yLWx5dWRlQHJlZGhhdC5jb20KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4g PHNhc2hhbEBrZXJuZWwub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBl ci5jIHwgMjEgKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKaW5k ZXggYzIyMDYyY2M5OTkyMy4uNzFjNzBhMDMxYTA0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNf aGVscGVyLmMKQEAgLTMwNyw2ICszMDcsMjYgQEAgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJcmV0dXJuIDA7CiAJfQogCisJY3J0Y19z dGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLAorCQkJCQkJICAgbmV3 X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yyk7CisJLyoKKwkgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRo IGxlZ2FjeSB1c2Vycywgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdAorCSAqIHdlIGFsbG93IERQ TVMgT24tPk9mZiBtb2Rlc2V0cyBvbiB1bnJlZ2lzdGVyZWQgY29ubmVjdG9ycy4gTW9kZXNldHMK KwkgKiB3aGljaCB3b3VsZCByZXN1bHQgaW4gYW55dGhpbmcgZWxzZSBtdXN0IGJlIGNvbnNpZGVy ZWQgaW52YWxpZCwgdG8KKwkgKiBhdm9pZCB0dXJuaW5nIG9uIG5ldyBkaXNwbGF5cyBvbiBkZWFk IGNvbm5lY3RvcnMuCisJICoKKwkgKiBTaW5jZSB0aGUgY29ubmVjdG9yIGNhbiBiZSB1bnJlZ2lz dGVyZWQgYXQgYW55IHBvaW50IGR1cmluZyBhbgorCSAqIGF0b21pYyBjaGVjayBvciBjb21taXQs IHRoaXMgaXMgcmFjeS4gQnV0IHRoYXQncyBPSzogYWxsIHdlIGNhcmUKKwkgKiBhYm91dCBpcyBl bnN1cmluZyB0aGF0IHVzZXJzcGFjZSBjYW4ndCBkbyBhbnl0aGluZyBidXQgc2h1dCBvZmYgdGhl CisJICogZGlzcGxheSBvbiBhIGNvbm5lY3RvciB0aGF0IHdhcyBkZXN0cm95ZWQgYWZ0ZXIgaXRz IGJlZW4gbm90aWZpZWQsCisJICogbm90IGJlZm9yZS4KKwkgKi8KKwlpZiAoIVJFQURfT05DRShj b25uZWN0b3ItPnJlZ2lzdGVyZWQpICYmIGNydGNfc3RhdGUtPmFjdGl2ZSkgeworCQlEUk1fREVC VUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVkOiVzXSBpcyBub3QgcmVnaXN0ZXJlZFxuIiwKKwkJCQkg Y29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKIAlmdW5jcyA9IGNvbm5lY3Rvci0+aGVscGVyX3ByaXZhdGU7CiAKIAlpZiAoZnVuY3Mt PmF0b21pY19iZXN0X2VuY29kZXIpCkBAIC0zNTEsNyArMzcxLDYgQEAgdXBkYXRlX2Nvbm5lY3Rv cl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAogCXNldF9iZXN0X2Vu Y29kZXIoc3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUsIG5ld19lbmNvZGVyKTsKIAotCWNydGNf c3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgbmV3X2Nvbm5lY3Rv cl9zdGF0ZS0+Y3J0Yyk7CiAJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsK IAogCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6JWQ6JXNdIHVzaW5nIFtFTkNPREVSOiVk OiVzXSBvbiBbQ1JUQzolZDolc11cbiIsCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28695C3A5A7 for ; Tue, 3 Sep 2019 16:26:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F3669238F9 for ; Tue, 3 Sep 2019 16:26:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567527973; bh=qUDXs+NRk9kq4QOIe8TO4tnvqCIQP/qICPClCjAc3Kg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=vS6djtXoHZfnt1eGlGH8G+PkqIxz5B42ldXaMWgYoKTFJDJdqDoD/MrzqAeP3MC7e qGAMbTeF/KCrA09W/nuRy9YfSj5UvjcGZSi5Bt0PSF+R7pKvIH//NHxL32ZjPY6EtO Q0ZIr4fc1/WFad10VWipNyjR4DJS/I2ARDNXAOHI= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729873AbfICQ0M (ORCPT ); Tue, 3 Sep 2019 12:26:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:46242 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730103AbfICQZy (ORCPT ); Tue, 3 Sep 2019 12:25:54 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (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 75A4823717; Tue, 3 Sep 2019 16:25:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567527953; bh=qUDXs+NRk9kq4QOIe8TO4tnvqCIQP/qICPClCjAc3Kg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dmWpGoTvgLAU39UmPomTJN0cDldoLCAmFcFhgkXF/7hPqzeFCfo3PQRxaknskDlvn Hki1MiXQwZ3+1HJnxHqOT1rGq97dGgDqNrI/u7C8w+OyvENyYaklTy2tyfYXpKuxrv g9oavyA++9iG5MnftRgY0vzrVhW1kh7DmUNcHTq4= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Lyude Paul , Daniel Vetter , Sasha Levin , dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 4.19 019/167] drm/atomic_helper: Disallow new modesets on unregistered connectors Date: Tue, 3 Sep 2019 12:22:51 -0400 Message-Id: <20190903162519.7136-19-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190903162519.7136-1-sashal@kernel.org> References: <20190903162519.7136-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lyude Paul [ Upstream commit 4d80273976bf880c4bed9359b8f2d45663140c86 ] With the exception of modesets which would switch the DPMS state of a connector from on to off, we want to make sure that we disallow all modesets which would result in enabling a new monitor or a new mode configuration on a monitor if the connector for the display in question is no longer registered. This allows us to stop userspace from trying to enable new displays on connectors for an MST topology that were just removed from the system, without preventing userspace from disabling DPMS on those connectors. Changes since v5: - Fix typo in comment, nothing else Signed-off-by: Lyude Paul Reviewed-by: Daniel Vetter Cc: stable@vger.kernel.org Link: https://patchwork.freedesktop.org/patch/msgid/20181008232437.5571-2-lyude@redhat.com Signed-off-by: Sasha Levin --- drivers/gpu/drm/drm_atomic_helper.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index c22062cc99923..71c70a031a043 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -307,6 +307,26 @@ update_connector_routing(struct drm_atomic_state *state, return 0; } + crtc_state = drm_atomic_get_new_crtc_state(state, + new_connector_state->crtc); + /* + * For compatibility with legacy users, we want to make sure that + * we allow DPMS On->Off modesets on unregistered connectors. Modesets + * which would result in anything else must be considered invalid, to + * avoid turning on new displays on dead connectors. + * + * Since the connector can be unregistered at any point during an + * atomic check or commit, this is racy. But that's OK: all we care + * about is ensuring that userspace can't do anything but shut off the + * display on a connector that was destroyed after its been notified, + * not before. + */ + if (!READ_ONCE(connector->registered) && crtc_state->active) { + DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] is not registered\n", + connector->base.id, connector->name); + return -EINVAL; + } + funcs = connector->helper_private; if (funcs->atomic_best_encoder) @@ -351,7 +371,6 @@ update_connector_routing(struct drm_atomic_state *state, set_best_encoder(state, new_connector_state, new_encoder); - crtc_state = drm_atomic_get_new_crtc_state(state, new_connector_state->crtc); crtc_state->connectors_changed = true; DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] using [ENCODER:%d:%s] on [CRTC:%d:%s]\n", -- 2.20.1