mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-20 14:00:11 +01:00
amdgpu: fix deinit logic
The devices weren't removed from dev_list.
Instead of just fixing the issue by adding:
if (*node) *node = dev->next;
after the while loop, use this opportunity to use a clearer
control flow.
Fixes: 7275ef8e ("amdgpu: add amdgpu_device_initialize2")
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Tested-by: Mike Lothian <mike@fireburn.co.uk>
This commit is contained in:
parent
c45ffb1edf
commit
c7c3c14bfc
1 changed files with 10 additions and 4 deletions
|
|
@ -95,11 +95,17 @@ static int amdgpu_get_auth(int fd, int *auth)
|
||||||
|
|
||||||
static void amdgpu_device_free_internal(amdgpu_device_handle dev)
|
static void amdgpu_device_free_internal(amdgpu_device_handle dev)
|
||||||
{
|
{
|
||||||
amdgpu_device_handle *node = &dev_list;
|
|
||||||
|
|
||||||
/* Remove dev from dev_list, if it was added there. */
|
/* Remove dev from dev_list, if it was added there. */
|
||||||
while (*node != dev && *node && (*node)->next)
|
if (dev == dev_list) {
|
||||||
node = &(*node)->next;
|
dev_list = dev->next;
|
||||||
|
} else {
|
||||||
|
for (amdgpu_device_handle node = dev_list; node; node = node->next) {
|
||||||
|
if (node->next == dev) {
|
||||||
|
node->next = dev->next;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
close(dev->fd);
|
close(dev->fd);
|
||||||
if ((dev->flink_fd >= 0) && (dev->fd != dev->flink_fd))
|
if ((dev->flink_fd >= 0) && (dev->fd != dev->flink_fd))
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue