summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2017-09-03 13:28:54 +0000
committerjsg <jsg@openbsd.org>2017-09-03 13:28:54 +0000
commit9e4f26515a2e91706e020df5f725816dbc99f42d (patch)
tree08b62ea6c6084315a128cade04398aca11d18369
parentChecking sizeof size_t by SIZE_MAX instead of _LP64 (diff)
downloadwireguard-openbsd-9e4f26515a2e91706e020df5f725816dbc99f42d.tar.xz
wireguard-openbsd-9e4f26515a2e91706e020df5f725816dbc99f42d.zip
drm: Release driver tracking before making the object available again
From Chris Wilson 2a9d7664ffb2c223c488058ee6bee61512db9396 in linux-4.4.y/4.4.85 fe4600a548f2763dec91b3b27a1245c370ceee2a in mainline linux
-rw-r--r--sys/dev/pci/drm/drm_gem.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/dev/pci/drm/drm_gem.c b/sys/dev/pci/drm/drm_gem.c
index dadb5366099..ecf81f371e3 100644
--- a/sys/dev/pci/drm/drm_gem.c
+++ b/sys/dev/pci/drm/drm_gem.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: drm_gem.c,v 1.4 2017/07/01 16:00:25 kettenis Exp $ */
+/* $OpenBSD: drm_gem.c,v 1.5 2017/09/03 13:28:54 jsg Exp $ */
/*
* Copyright © 2008 Intel Corporation
*
@@ -829,13 +829,13 @@ drm_gem_object_release_handle(int id, void *ptr, void *data)
struct drm_gem_object *obj = ptr;
struct drm_device *dev = obj->dev;
+ if (dev->driver->gem_close_object)
+ dev->driver->gem_close_object(obj, file_priv);
+
if (drm_core_check_feature(dev, DRIVER_PRIME))
drm_gem_remove_prime_handles(obj, file_priv);
drm_vma_node_revoke(&obj->vma_node, file_priv->filp);
- if (dev->driver->gem_close_object)
- dev->driver->gem_close_object(obj, file_priv);
-
drm_gem_object_handle_unreference_unlocked(obj);
return 0;