On Mon, Oct 17, 2022 at 03:32:01PM +0000, Simon Ser wrote: > A typical DP-MST unplug removes a KMS connector. However care must > be taken to properly synchronize with user-space. The expected > sequence of events is the following: > > 1. The kernel notices that the DP-MST port is gone. > 2. The kernel marks the connector as disconnected, then sends a > uevent to make user-space re-scan the connector list. > 3. User-space notices the connector goes from connected to disconnected, > disables it. > 4. Kernel handles the the IOCTL disabling the connector. On success, > the very last reference to the struct drm_connector is dropped and > drm_connector_cleanup() is called. > 5. The connector is removed from the list, and a uevent is sent to tell > user-space that the connector disappeared. > > The very last step was missing. As a result, user-space thought the > connector still existed and could try to disable it again. Since the > kernel no longer knows about the connector, that would end up with > EINVAL and confused user-space. > > Fix this by sending a hotplug uevent from drm_connector_cleanup(). > > Signed-off-by: Simon Ser <contact@xxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Lyude Paul <lyude@xxxxxxxxxx> > Cc: Jonas Ådahl <jadahl@xxxxxxxxxx> Tested-by: Jonas Ådahl <jadahl@xxxxxxxxxx> Jonas