On Tue, Jun 02, 2020 at 08:37:31PM -0700, Jeykumar Sankaran wrote: > drm connector notifies userspace on hotplug event prematurely before > late_register and mode_object register completes. This leads to a race > between userspace and kernel on updating the IDR list. So, move the > notification to end of connector register. > > Signed-off-by: Jeykumar Sankaran <jsanka@xxxxxxxxxxxxxx> > Signed-off-by: Steve Cohen <cohens@xxxxxxxxxxxxxx> Hm on the unregister side we don't have the race, there we remove everything and then send out the uevent. But there the uevent is also generated in a separate step, so I wonder whether we shouldn't do the same for register for symmetry ... Anyway this looks good, nice catch, I'll add cc: stable and merge. -Daniel > --- > drivers/gpu/drm/drm_connector.c | 5 +++++ > drivers/gpu/drm/drm_sysfs.c | 3 --- > 2 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c > index b1099e1..d877ddc 100644 > --- a/drivers/gpu/drm/drm_connector.c > +++ b/drivers/gpu/drm/drm_connector.c > @@ -27,6 +27,7 @@ > #include <drm/drm_print.h> > #include <drm/drm_drv.h> > #include <drm/drm_file.h> > +#include <drm/drm_sysfs.h> > > #include <linux/uaccess.h> > > @@ -523,6 +524,10 @@ int drm_connector_register(struct drm_connector *connector) > drm_mode_object_register(connector->dev, &connector->base); > > connector->registration_state = DRM_CONNECTOR_REGISTERED; > + > + /* Let userspace know we have a new connector */ > + drm_sysfs_hotplug_event(connector->dev); > + > goto unlock; > > err_debugfs: > diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c > index 939f003..f0336c8 100644 > --- a/drivers/gpu/drm/drm_sysfs.c > +++ b/drivers/gpu/drm/drm_sysfs.c > @@ -291,9 +291,6 @@ int drm_sysfs_connector_add(struct drm_connector *connector) > return PTR_ERR(connector->kdev); > } > > - /* Let userspace know we have a new connector */ > - drm_sysfs_hotplug_event(dev); > - > if (connector->ddc) > return sysfs_create_link(&connector->kdev->kobj, > &connector->ddc->dev.kobj, "ddc"); > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel