summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/drm_client_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_client_event.c')
-rw-r--r--drivers/gpu/drm/drm_client_event.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/drm_client_event.c b/drivers/gpu/drm/drm_client_event.c
index c3baeb4d4e6b..d25dc5250983 100644
--- a/drivers/gpu/drm/drm_client_event.c
+++ b/drivers/gpu/drm/drm_client_event.c
@@ -39,12 +39,13 @@ void drm_client_dev_unregister(struct drm_device *dev)
mutex_lock(&dev->clientlist_mutex);
list_for_each_entry_safe(client, tmp, &dev->clientlist, list) {
list_del(&client->list);
- if (client->funcs && client->funcs->unregister) {
+ /*
+ * Unregistering consumes and frees the client.
+ */
+ if (client->funcs && client->funcs->unregister)
client->funcs->unregister(client);
- } else {
+ else
drm_client_release(client);
- kfree(client);
- }
}
mutex_unlock(&dev->clientlist_mutex);
}