summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--amdgpu/amdgpu_device.c14
1 files changed, 10 insertions, 4 deletions
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))