diff --git a/main/channel.c b/main/channel.c
index 4ee088948ba8315ed74e8a5243094ab988fe1797..acc851aacb2b1c493b82d7aa2068b34cd58dec2a 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -2360,6 +2360,7 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
 					ast_set_flag(chan, AST_FLAG_EMULATE_DTMF);
 					chan->emulate_dtmf_digit = f->subclass;
 					chan->emulate_dtmf_duration = AST_MIN_DTMF_DURATION - f->len;
+					ast_frfree(f);
 					f = &ast_null_frame;
 				} else {
 					ast_log(LOG_DTMF, "DTMF end passthrough '%c' on %s\n", f->subclass, chan->name);