Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/edonr_zfs.c =================================================================== --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/edonr_zfs.c +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/edonr_zfs.c @@ -57,6 +57,7 @@ (void) abd_iterate_func(abd, 0, size, edonr_incremental, &ctx); EdonRFinal(&ctx, digest); bcopy(digest, zcp->zc_word, sizeof (zcp->zc_word)); + explicit_bzero(&ctx, sizeof(ctx)); } /* @@ -109,6 +110,6 @@ { EdonRState *ctx = ctx_template; - bzero(ctx, sizeof (*ctx)); + explicit_bzero(ctx, sizeof (*ctx)); kmem_free(ctx, sizeof (*ctx)); } Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/skein_zfs.c =================================================================== --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/skein_zfs.c +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/skein_zfs.c @@ -55,7 +55,7 @@ bcopy(ctx_template, &ctx, sizeof (ctx)); (void) abd_iterate_func(abd, 0, size, skein_incremental, &ctx); (void) Skein_512_Final(&ctx, (uint8_t *)zcp); - bzero(&ctx, sizeof (ctx)); + explicit_bzero(&ctx, sizeof (ctx)); } /* @@ -100,6 +100,6 @@ { Skein_512_Ctxt_t *ctx = ctx_template; - bzero(ctx, sizeof (*ctx)); + explicit_bzero(ctx, sizeof (*ctx)); kmem_free(ctx, sizeof (*ctx)); }