diff --git a/examples/nvme/arbitration/arbitration.c b/examples/nvme/arbitration/arbitration.c index 882c265d1..a3abc694c 100644 --- a/examples/nvme/arbitration/arbitration.c +++ b/examples/nvme/arbitration/arbitration.c @@ -434,8 +434,16 @@ cleanup(uint32_t task_count) }; while (worker) { + struct ns_worker_ctx *ns_ctx = worker->ns_ctx; + + /* ns_worker_ctx is a list in the worker */ + while (ns_ctx) { + struct ns_worker_ctx *next_ns_ctx = ns_ctx->next; + free(ns_ctx); + ns_ctx = next_ns_ctx; + } + next_worker = worker->next; - free(worker->ns_ctx); free(worker); worker = next_worker; };