⬢ DragonFlyBSD Kernel Audit
DF-5022 / fix.diff
← back to finding ↓ download raw
--- 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);
 		}