Single fix for v4.18:
- Fix possible race conditions while unplugging DRM device. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEuXvWqAysSYEJGuVH/lWMcqZwE8MFAlsjdH0ACgkQ/lWMcqZw E8OqmRAAoI6zMk71lQo5ydN3uo47aj5MUvz9cYIioDGI2VVsAvwEWG0x/R/+CTyR UrLyB+sMkFsL8VvlABq4q7dM3a66T5ZF9j4+StI3AK7MmlcPcf8WzzOJlwyHR4AO kvUCRcMgYYrbJJ5R36qj9dyDtd6BFGql/hFVTv7tim1QY8AdGFB7MMaK6AofPxbX h6CHbpQu9GQDIxhfBPBGj7u1z+ew51mT/ZxjzvsjaCjYbVNKRSFU9qAYlSOqYYM6 MlZRlssV3oRq9u0ZntHJZO0/k4rndImlcKQd9jCMDOObNTxE9c0Kdh+1F2PrOL6s QGi42W2CqEsaqJ/Rc/vZ6g6sbpBPJjaTsFRLjtrlgNc78kopsue2FW3p6tFSyRug NHCPYwEwfaPaA+/XWsv936Zqq6bTDdJCh6XI7nHslIuOvYgymvmBJQ5cS2FahaBM ylzGnDySkdcP3OgytIdFz6/bPnkT8NmcoHqfXUyTwDpBKIX9a+BlPkchCj8noHNO s7OfxgJsECpj79c2ezwza4zUVNmGYmQbLoB9R3hw/qxEQ5CBcR+XMwuf9u9+Xlqh OBLPcdP+covHgtqNV+faMCgSSJHDp5nPlCEh/KDJCJp5ZUStHT7Vw8cVSXRS80jr VfhK/wTdOJX4BRCKT68BGrkE6gaNqk6uTAGM6gJwMcRShuZaYo8= =eAzc -----END PGP SIGNATURE----- Merge tag 'drm-misc-next-fixes-2018-06-15' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes Single fix for v4.18: - Fix possible race conditions while unplugging DRM device. Signed-off-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/1fd8b7d1-e60a-0105-dfb5-d36f99ea0239@linux.intel.com
This commit is contained in:
commit
4216c1b9af
|
@ -369,13 +369,6 @@ EXPORT_SYMBOL(drm_dev_exit);
|
||||||
*/
|
*/
|
||||||
void drm_dev_unplug(struct drm_device *dev)
|
void drm_dev_unplug(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
drm_dev_unregister(dev);
|
|
||||||
|
|
||||||
mutex_lock(&drm_global_mutex);
|
|
||||||
if (dev->open_count == 0)
|
|
||||||
drm_dev_put(dev);
|
|
||||||
mutex_unlock(&drm_global_mutex);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* After synchronizing any critical read section is guaranteed to see
|
* After synchronizing any critical read section is guaranteed to see
|
||||||
* the new value of ->unplugged, and any critical section which might
|
* the new value of ->unplugged, and any critical section which might
|
||||||
|
@ -384,6 +377,13 @@ void drm_dev_unplug(struct drm_device *dev)
|
||||||
*/
|
*/
|
||||||
dev->unplugged = true;
|
dev->unplugged = true;
|
||||||
synchronize_srcu(&drm_unplug_srcu);
|
synchronize_srcu(&drm_unplug_srcu);
|
||||||
|
|
||||||
|
drm_dev_unregister(dev);
|
||||||
|
|
||||||
|
mutex_lock(&drm_global_mutex);
|
||||||
|
if (dev->open_count == 0)
|
||||||
|
drm_dev_put(dev);
|
||||||
|
mutex_unlock(&drm_global_mutex);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_dev_unplug);
|
EXPORT_SYMBOL(drm_dev_unplug);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue