|
@@ -152,6 +152,7 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv)
|
|
|
int drm_unlock(struct drm_device *dev, void *data, struct drm_file *file_priv)
|
|
|
{
|
|
|
struct drm_lock *lock = data;
|
|
|
+ struct drm_master *master = file_priv->master;
|
|
|
|
|
|
if (lock->context == DRM_KERNEL_CONTEXT) {
|
|
|
DRM_ERROR("Process %d using kernel context %d\n",
|
|
@@ -161,6 +162,10 @@ int drm_unlock(struct drm_device *dev, void *data, struct drm_file *file_priv)
|
|
|
|
|
|
atomic_inc(&dev->counts[_DRM_STAT_UNLOCKS]);
|
|
|
|
|
|
+ if (drm_lock_free(&master->lock, lock->context)) {
|
|
|
+ /* FIXME: Should really bail out here. */
|
|
|
+ }
|
|
|
+
|
|
|
unblock_all_signals();
|
|
|
return 0;
|
|
|
}
|