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>
This commit is contained in:
@@ -454,6 +454,8 @@ void drm_sysfs_connector_remove(struct drm_connector *connector)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!connector->kdev.parent)
|
||||||
|
return;
|
||||||
DRM_DEBUG("removing \"%s\" from sysfs\n",
|
DRM_DEBUG("removing \"%s\" from sysfs\n",
|
||||||
drm_get_connector_name(connector));
|
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]);
|
device_remove_file(&connector->kdev, &connector_attrs[i]);
|
||||||
sysfs_remove_bin_file(&connector->kdev.kobj, &edid_attr);
|
sysfs_remove_bin_file(&connector->kdev.kobj, &edid_attr);
|
||||||
device_unregister(&connector->kdev);
|
device_unregister(&connector->kdev);
|
||||||
|
connector->kdev.parent = NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_sysfs_connector_remove);
|
EXPORT_SYMBOL(drm_sysfs_connector_remove);
|
||||||
|
|
||||||
@@ -533,7 +536,9 @@ err_out:
|
|||||||
*/
|
*/
|
||||||
void drm_sysfs_device_remove(struct drm_minor *minor)
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user