This is a note to let you know that I've just added the patch titled drm/atomic_helper: Disallow new modesets on unregistered connectors to the 4.19-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: drm-atomic_helper-disallow-new-modesets-on-unregistered-connectors.patch and it can be found in the queue-4.19 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From e96550956fbcd090629c0e2b5b8cded2eded2adf Mon Sep 17 00:00:00 2001 From: Lyude Paul <lyude@xxxxxxxxxx> Date: Mon, 8 Oct 2018 19:24:30 -0400 Subject: drm/atomic_helper: Disallow new modesets on unregistered connectors From: Lyude Paul <lyude@xxxxxxxxxx> commit e96550956fbcd090629c0e2b5b8cded2eded2adf upstream. 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 <lyude@xxxxxxxxxx> Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> Cc: stable@xxxxxxxxxxxxxxx Link: https://patchwork.freedesktop.org/patch/msgid/20181008232437.5571-2-lyude@xxxxxxxxxx (cherry picked from commit 4d80273976bf880c4bed9359b8f2d45663140c86) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/drm_atomic_helper.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) --- 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_atom 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_atom 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", Patches currently in stable-queue which might be from lyude@xxxxxxxxxx are queue-4.19/drm-atomic_helper-disallow-new-modesets-on-unregistered-connectors.patch queue-4.19/drm-i915-fix-hpd-handling-for-pins-with-two-encoders.patch queue-4.19/drm-i915-dp-restrict-link-retrain-workaround-to-external-monitors.patch queue-4.19/drm-nouveau-fix-nv50_mstc-best_encoder.patch queue-4.19/drm-i915-skip-vcpi-allocation-for-mstb-ports-that-are-gone.patch queue-4.19/drm-amdgpu-suppress-keypresses-from-acpi_video-events.patch queue-4.19/drm-i915-dp-fix-link-retraining-comment-in-intel_dp_long_pulse.patch queue-4.19/drm-i915-don-t-unset-intel_connector-mst_port.patch queue-4.19/drm-i915-fix-possible-race-in-intel_dp_add_mst_connector.patch queue-4.19/drm-nouveau-check-backlight-ids-are-0-not-0.patch queue-4.19/drm-i915-fix-null-deref-when-re-enabling-hpd-irqs-on-systems-with-mst.patch queue-4.19/drm-dp_mst-check-if-primary-mstb-is-null.patch