DF-5022 / fix.diff
--- a/sys/dev/sound/pcm/feeder_volume.c +++ b/sys/dev/sound/pcm/feeder_volume.c @@ -162,14 +162,17 @@ feed_volume_init(struct pcm_feeder *f) f->data = info; m = feeder_matrix_default_channel_map(info->channels); if (m == NULL) { + f->data = NULL; /* DF-5022: unpublish before free */ kfree(info, M_DEVBUF); return (EINVAL); } ret = feeder_volume_apply_matrix(f, m); - if (ret != 0) + if (ret != 0) { + f->data = NULL; /* DF-5022: unpublish before free */ kfree(info, M_DEVBUF); + } return (ret); } |