When daxctl_unref is releasing the context, we should make sure that the regions and devices are also being released.
Signed-off-by: Dave Jiang <[email protected]> --- daxctl/lib/libdaxctl.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/daxctl/lib/libdaxctl.c b/daxctl/lib/libdaxctl.c index 9e503201..0552f6d7 100644 --- a/daxctl/lib/libdaxctl.c +++ b/daxctl/lib/libdaxctl.c @@ -119,11 +119,18 @@ DAXCTL_EXPORT struct daxctl_ctx *daxctl_ref(struct daxctl_ctx *ctx) */ DAXCTL_EXPORT void daxctl_unref(struct daxctl_ctx *ctx) { + struct daxctl_region *region; + if (ctx == NULL) return; ctx->refcount--; if (ctx->refcount > 0) return; + + while ((region = list_top(&ctx->regions, struct daxctl_region, list)) != + NULL) + daxctl_region_unref(region); + info(ctx, "context %p released\n", ctx); free(ctx); } _______________________________________________ Linux-nvdimm mailing list [email protected] https://lists.01.org/mailman/listinfo/linux-nvdimm
