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=-11.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED 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 DF789C43387 for ; Fri, 11 Jan 2019 13:02:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AEC3120836 for ; Fri, 11 Jan 2019 13:02:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1547211723; bh=+L9b2RdKB63hTkHsF1qGrp4ZIHqYvKc6I+xlyX8xCyU=; h=Subject:To:Cc:From:Date:List-ID:From; b=cbjwjqFiwuRownDN8dbgusveIXe/V7k3+2qTVVlPatmCgzihX90z6Vy3BY3I61SYZ kcqkmO1UweOGuQEzgGA2XsaPLMkT5An4ZvCDHRXy0CVACksR23iKNdLDOvjq3e1W12 aR9f9IHXaJK+yCRLRGtjxY1vwwk4VKMapCSxbxjY= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731759AbfAKNCD (ORCPT ); Fri, 11 Jan 2019 08:02:03 -0500 Received: from new3-smtp.messagingengine.com ([66.111.4.229]:51573 "EHLO new3-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728556AbfAKNCC (ORCPT ); Fri, 11 Jan 2019 08:02:02 -0500 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailnew.nyi.internal (Postfix) with ESMTP id 5DA1CA4A2; Fri, 11 Jan 2019 08:02:01 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute6.internal (MEProxy); Fri, 11 Jan 2019 08:02:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=FMF4iJ 8NPp0ksYuVmbAl04jNaZ5hmR7Xflw6UDkXmOE=; b=ER0zfijzM8O727P6x5PZmt mmCwWLj/jE0hZ5jifDQf5jq5bso6UCvE8MLnEE1LMxmAJ8hT6NC8R6tZF81TBq0l GtGyICFwFa8h1nt8/UMvD6OfmbEdirCP51lVA4OXYUNDLj35hpk/ufHQZOl7NwnJ ssIdksxSSlgqiXTrQZYSSql2pd9kYqE/CiaKBI5/55CYDvfI2fgOSD4Rs9DlXzjL Wri+egHusWuUic9WED0LpMK2ayi+TnJ1sspInLrkzHQLyzMDqdbUOMwYd3/lYms2 nle5yIgoVx31wptJLzYH8hhiz8bT2mm8yFYmTntbjUALtckvC90iGnlw4D5pVzbw == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedtledrfeehgdegjecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfhuthenuceurghilhhouhhtmecufedt tdenucgoufhprghmkfhpucdlfedttddmnecujfgurhepuffvhfffkfggtgfgsehtkeertd dttdflnecuhfhrohhmpeeoghhrvghgkhhhsehlihhnuhigfhhouhhnuggrthhiohhnrdho rhhgqeenucffohhmrghinhepfhhrvggvuggvshhkthhophdrohhrghenucfkphepkeefrd ekiedrkeelrddutdejnecurfgrrhgrmhepmhgrihhlfhhrohhmpehgrhgvgheskhhrohgr hhdrtghomhenucevlhhushhtvghrufhiiigvpedv X-ME-Proxy: Received: from localhost (5356596b.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) by mail.messagingengine.com (Postfix) with ESMTPA id 936F3E4599; Fri, 11 Jan 2019 08:02:00 -0500 (EST) Subject: FAILED: patch "[PATCH] drm/atomic_helper: Disallow new modesets on unregistered" failed to apply to 4.20-stable tree To: lyude@redhat.com, daniel.vetter@ffwll.ch Cc: From: Date: Fri, 11 Jan 2019 14:01:59 +0100 Message-ID: <154721171972178@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org The patch below does not apply to the 4.20-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to . thanks, greg k-h ------------------ original commit in Linus's tree ------------------ >From 4d80273976bf880c4bed9359b8f2d45663140c86 Mon Sep 17 00:00:00 2001 From: Lyude Paul Date: Mon, 8 Oct 2018 19:24:30 -0400 Subject: [PATCH] drm/atomic_helper: Disallow new modesets on unregistered connectors 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 diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 3cf1aa132778..c1a35078b2b9 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -308,6 +308,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) @@ -352,7 +372,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",