xf86-video-modesetting: src/drmmode_display.c

Dave Airlie airlied at kemper.freedesktop.org
Tue Jan 8 18:49:41 PST 2013


 src/drmmode_display.c |    5 +++++
 1 file changed, 5 insertions(+)

New commits:
commit 282e6876fc32d41648684b858e13130c97a58b8e
Author: Dave Airlie <airlied at redhat.com>
Date:   Wed Jan 9 12:48:30 2013 +1000

    modesetting: fix crashes caused by udev race conditions
    
    So the kernel removes the device, and the driver processes the first
    udev event, and gets no output back from the kernel, so it check
    and don't fall over.
    
    This fixes a couple of crashes seen when hotplugging USB devices.
    
    Signed-off-by: Dave Airlie <airlied at redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 8d760c2..42cd5ac 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -589,6 +589,8 @@ drmmode_output_detect(xf86OutputPtr output)
 	drmModeFreeConnector(drmmode_output->mode_output);
 
 	drmmode_output->mode_output = drmModeGetConnector(drmmode->fd, drmmode_output->output_id);
+	if (!drmmode_output->mode_output)
+		return XF86OutputStatusDisconnected;
 
 	switch (drmmode_output->mode_output->connection) {
 	case DRM_MODE_CONNECTED:
@@ -683,6 +685,9 @@ drmmode_output_dpms(xf86OutputPtr output, int mode)
 	drmModeConnectorPtr koutput = drmmode_output->mode_output;
 	drmmode_ptr drmmode = drmmode_output->drmmode;
 
+	if (!koutput)
+		return;
+
 	drmModeConnectorSetProperty(drmmode->fd, koutput->connector_id,
 				    drmmode_output->dpms_enum_id, mode);
 	return;


More information about the xorg-commit mailing list