diff options
Diffstat (limited to 'blockdev.c')
-rw-r--r-- | blockdev.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/blockdev.c b/blockdev.c index 93417f6302..b250b9b959 100644 --- a/blockdev.c +++ b/blockdev.c @@ -3725,28 +3725,25 @@ void qmp_x_blockdev_change(const char *parent, bool has_child, BlockJobInfoList *qmp_query_block_jobs(Error **errp) { - BlockJobInfoList *head = NULL, **p_next = &head; + BlockJobInfoList *head = NULL, **tail = &head; BlockJob *job; for (job = block_job_next(NULL); job; job = block_job_next(job)) { - BlockJobInfoList *elem; + BlockJobInfo *value; AioContext *aio_context; if (block_job_is_internal(job)) { continue; } - elem = g_new0(BlockJobInfoList, 1); aio_context = blk_get_aio_context(job->blk); aio_context_acquire(aio_context); - elem->value = block_job_query(job, errp); + value = block_job_query(job, errp); aio_context_release(aio_context); - if (!elem->value) { - g_free(elem); + if (!value) { qapi_free_BlockJobInfoList(head); return NULL; } - *p_next = elem; - p_next = &elem->next; + QAPI_LIST_APPEND(tail, value); } return head; |