diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c index 97dbfb44..34463b53 100644 --- a/amdgpu/amdgpu_device.c +++ b/amdgpu/amdgpu_device.c @@ -95,11 +95,17 @@ static int amdgpu_get_auth(int fd, int *auth) 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. */ - while (*node != dev && *node && (*node)->next) - node = &(*node)->next; + if (dev == dev_list) { + 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); if ((dev->flink_fd >= 0) && (dev->fd != dev->flink_fd))