media: vidtv: fix use after free in vidtv_channel_si_destroy()

Message ID X8ilBh7cBIqSpP6Y@mwanda (mailing list archive)
State Superseded, archived
Headers
Series media: vidtv: fix use after free in vidtv_channel_si_destroy() |

Commit Message

Dan Carpenter Dec. 3, 2020, 8:42 a.m. UTC
  This code frees "m->si.pat" and then dereferences it on the next line.

Fixes: 039b7caed173 ("media: vidtv: add a PID entry for the NIT table")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/media/test-drivers/vidtv/vidtv_channel.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Daniel Almeida Dec. 3, 2020, 1:30 p.m. UTC | #1
Hi Dan,

> This code frees "m->si.pat" and then dereferences it on the next line.
> 
> Fixes: 039b7caed173 ("media: vidtv: add a PID entry for the NIT table")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> drivers/media/test-drivers/vidtv/vidtv_channel.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)


IIRC there has been a similar patch [1] that has already been accepted
by Mauro..


[1]: https://patchwork.linuxtv.org/project/linux-media/patch/20201127132832.15239-1-colin.king@canonical.com/

-- thanks
-- Daniel
  

Patch

diff --git a/drivers/media/test-drivers/vidtv/vidtv_channel.c b/drivers/media/test-drivers/vidtv/vidtv_channel.c
index 8ad6c0744d36..7838e6272712 100644
--- a/drivers/media/test-drivers/vidtv/vidtv_channel.c
+++ b/drivers/media/test-drivers/vidtv/vidtv_channel.c
@@ -504,11 +504,11 @@  void vidtv_channel_si_destroy(struct vidtv_mux *m)
 {
 	u32 i;
 
-	vidtv_psi_pat_table_destroy(m->si.pat);
-
 	for (i = 0; i < m->si.pat->num_pmt; ++i)
 		vidtv_psi_pmt_table_destroy(m->si.pmt_secs[i]);
 
+	vidtv_psi_pat_table_destroy(m->si.pat);
+
 	kfree(m->si.pmt_secs);
 	vidtv_psi_sdt_table_destroy(m->si.sdt);
 	vidtv_psi_nit_table_destroy(m->si.nit);