This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: vidtv: move kfree(dvb) to vidtv_bridge_dev_release()
Author:  Hans Verkuil <[email protected]>
Date:    Tue Sep 14 08:21:25 2021 +0100

Adding kfree(dvb) to vidtv_bridge_remove() will remove the memory
too soon: if an application still has an open filehandle to the device
when the driver is unloaded, then when that filehandle is closed, a
use-after-free access takes place to the freed memory.

Move the kfree(dvb) to vidtv_bridge_dev_release() instead.

Signed-off-by: Hans Verkuil <[email protected]>
Fixes: 76e21bb8be4f ("media: vidtv: Fix memory leak in remove")
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/test-drivers/vidtv/vidtv_bridge.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

---

diff --git a/drivers/media/test-drivers/vidtv/vidtv_bridge.c 
b/drivers/media/test-drivers/vidtv/vidtv_bridge.c
index 0f6d998d18dc..82620613d56b 100644
--- a/drivers/media/test-drivers/vidtv/vidtv_bridge.c
+++ b/drivers/media/test-drivers/vidtv/vidtv_bridge.c
@@ -557,7 +557,6 @@ static int vidtv_bridge_remove(struct platform_device *pdev)
        dvb_dmxdev_release(&dvb->dmx_dev);
        dvb_dmx_release(&dvb->demux);
        dvb_unregister_adapter(&dvb->adapter);
-       kfree(dvb);
        dev_info(&pdev->dev, "Successfully removed vidtv\n");
 
        return 0;
@@ -565,6 +564,10 @@ static int vidtv_bridge_remove(struct platform_device 
*pdev)
 
 static void vidtv_bridge_dev_release(struct device *dev)
 {
+       struct vidtv_dvb *dvb;
+
+       dvb = dev_get_drvdata(dev);
+       kfree(dvb);
 }
 
 static struct platform_device vidtv_bridge_dev = {

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to