diff options
-rw-r--r-- | xf86drm.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -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 | |||
1542 | err_free_list: | ||
1543 | drmFree(list); | ||
1544 | err_free_context: | ||
1545 | drmFree(retval); | ||
1546 | return NULL; | ||
1541 | } | 1547 | } |
1542 | 1548 | ||
1543 | void drmFreeReservedContextList(drm_context_t *pt) | 1549 | void drmFreeReservedContextList(drm_context_t *pt) |