diff --git a/zio-sys.c b/zio-sys.c
index 00398fff9114122616a04a68d041065139700358..916f6326276787327d7c9a86817c3d73b1282f39 100644
--- a/zio-sys.c
+++ b/zio-sys.c
@@ -1087,10 +1087,12 @@ static int cset_register(struct zio_cset *cset)
 out_init:
 	__trigger_destroy_instance(cset);
 out_trig:
+	zio_trigger_put(cset->trig);
 	cset->trig = NULL;
 out_reg:
 	for (j = i-1; j >= 0; j--)
 		chan_unregister(&cset->chan[j]);
+	zio_buffer_put(cset->zbuf);
 out_buf:
 	cset_free_chan(cset);
 out_alloc: