diff options
author | Dave Airlie <airlied@redhat.com> | 2012-02-20 18:15:02 +0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-03-15 17:35:31 +0400 |
commit | 1828fe6c5f593b835197edd30a28d80635238ab3 (patch) | |
tree | 00f500f5553350622467c3778a69e7ae8143ed28 /drivers/gpu/drm/drm_sysfs.c | |
parent | ce880cb860f36694d2cdebfac9e6ae18176fe4c4 (diff) | |
download | linux-1828fe6c5f593b835197edd30a28d80635238ab3.tar.xz |
drm/sysfs: protect sysfs removal code against being run twice.
a step towards correct hot unplug for USB devices, we need to
remove the userspace facing bits at the unplug time for correct
udev operation.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/drm_sysfs.c')
-rw-r--r-- | drivers/gpu/drm/drm_sysfs.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c index 62c3675045ac..5a7bd51fc3d8 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c @@ -454,6 +454,8 @@ void drm_sysfs_connector_remove(struct drm_connector *connector) { int i; + if (!connector->kdev.parent) + return; DRM_DEBUG("removing \"%s\" from sysfs\n", drm_get_connector_name(connector)); @@ -461,6 +463,7 @@ void drm_sysfs_connector_remove(struct drm_connector *connector) device_remove_file(&connector->kdev, &connector_attrs[i]); sysfs_remove_bin_file(&connector->kdev.kobj, &edid_attr); device_unregister(&connector->kdev); + connector->kdev.parent = NULL; } EXPORT_SYMBOL(drm_sysfs_connector_remove); @@ -533,7 +536,9 @@ err_out: */ void drm_sysfs_device_remove(struct drm_minor *minor) { - device_unregister(&minor->kdev); + if (minor->kdev.parent) + device_unregister(&minor->kdev); + minor->kdev.parent = NULL; } |