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>
main
parent
c45ffb1edf
commit
c7c3c14bfc
|
@ -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…
Reference in New Issue