Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d6dea92a authored by Noralf Trønnes's avatar Noralf Trønnes Committed by Greg Kroah-Hartman
Browse files

drm/drv: Hold ref on parent device during drm_device lifetime



[ Upstream commit 56be6503aab2bc3a30beae408071b9be5e1bae51 ]

This makes it safe to access drm_device->dev after the parent device has
been removed/unplugged.

Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Reviewed-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190225144232.20761-2-noralf@tronnes.org


Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 473bc1af
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -499,7 +499,7 @@ int drm_dev_init(struct drm_device *dev,
	}

	kref_init(&dev->ref);
	dev->dev = parent;
	dev->dev = get_device(parent);
	dev->driver = driver;

	INIT_LIST_HEAD(&dev->filelist);
@@ -568,6 +568,7 @@ int drm_dev_init(struct drm_device *dev,
	drm_minor_free(dev, DRM_MINOR_RENDER);
	drm_fs_inode_free(dev->anon_inode);
err_free:
	put_device(dev->dev);
	mutex_destroy(&dev->master_mutex);
	mutex_destroy(&dev->ctxlist_mutex);
	mutex_destroy(&dev->clientlist_mutex);
@@ -603,6 +604,8 @@ void drm_dev_fini(struct drm_device *dev)
	drm_minor_free(dev, DRM_MINOR_PRIMARY);
	drm_minor_free(dev, DRM_MINOR_RENDER);

	put_device(dev->dev);

	mutex_destroy(&dev->master_mutex);
	mutex_destroy(&dev->ctxlist_mutex);
	mutex_destroy(&dev->clientlist_mutex);