Commit 57fe8285 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/client: Do not free client memory by default



Make no assumption on the allocation of the client's memory. For
example, amdgpu stores a client within another data structures,
where it cannot be freed by itself.

The correct place to free the client's memory is the client's free
callback. All existing clients implement this.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Link: https://lore.kernel.org/r/20251009132006.45834-5-tzimmermann@suse.de
parent 52a02339
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -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);
}