aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xf86drm.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/xf86drm.c b/xf86drm.c
index 88f86ed5..685cf69d 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -994,8 +994,10 @@ char *drmGetBusid(int fd)
994 if (drmIoctl(fd, DRM_IOCTL_GET_UNIQUE, &u)) 994 if (drmIoctl(fd, DRM_IOCTL_GET_UNIQUE, &u))
995 return NULL; 995 return NULL;
996 u.unique = drmMalloc(u.unique_len + 1); 996 u.unique = drmMalloc(u.unique_len + 1);
997 if (drmIoctl(fd, DRM_IOCTL_GET_UNIQUE, &u)) 997 if (drmIoctl(fd, DRM_IOCTL_GET_UNIQUE, &u)) {
998 drmFree(u.unique);
998 return NULL; 999 return NULL;
1000 }
999 u.unique[u.unique_len] = '\0'; 1001 u.unique[u.unique_len] = '\0';
1000 1002
1001 return u.unique; 1003 return u.unique;
@@ -1523,14 +1525,12 @@ drm_context_t *drmGetReservedContextList(int fd, int *count)
1523 1525
1524 if (!(list = drmMalloc(res.count * sizeof(*list)))) 1526 if (!(list = drmMalloc(res.count * sizeof(*list))))
1525 return NULL; 1527 return NULL;
1526 if (!(retval = drmMalloc(res.count * sizeof(*retval)))) { 1528 if (!(retval = drmMalloc(res.count * sizeof(*retval))))
1527 drmFree(list); 1529 goto err_free_list;
1528 return NULL;
1529 }
1530 1530
1531 res.contexts = list; 1531 res.contexts = list;
1532 if (drmIoctl(fd, DRM_IOCTL_RES_CTX, &res)) 1532 if (drmIoctl(fd, DRM_IOCTL_RES_CTX, &res))
1533 return NULL; 1533 goto err_free_context;
1534 1534
1535 for (i = 0; i < res.count; i++) 1535 for (i = 0; i < res.count; i++)
1536 retval[i] = list[i].handle; 1536 retval[i] = list[i].handle;
@@ -1538,6 +1538,12 @@ drm_context_t *drmGetReservedContextList(int fd, int *count)
1538 1538
1539 *count = res.count; 1539 *count = res.count;
1540 return retval; 1540 return retval;
1541
1542err_free_list:
1543 drmFree(list);
1544err_free_context:
1545 drmFree(retval);
1546 return NULL;
1541} 1547}
1542 1548
1543void drmFreeReservedContextList(drm_context_t *pt) 1549void drmFreeReservedContextList(drm_context_t *pt)