From 9c06dbb99aee7bcd47421376882e6db7d4f9d7bd Mon Sep 17 00:00:00 2001 From: ddl Date: Sat, 1 Jan 2011 21:38:08 +0800 Subject: [PATCH] camera:videobuf free invalidatemporary for voip --- drivers/media/video/rk29_camera_oneframe.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/media/video/rk29_camera_oneframe.c b/drivers/media/video/rk29_camera_oneframe.c index 1fb56816f614..07008022fa18 100755 --- a/drivers/media/video/rk29_camera_oneframe.c +++ b/drivers/media/video/rk29_camera_oneframe.c @@ -760,10 +760,14 @@ static void rk29_camera_remove_device(struct soc_camera_device *icd) rk29_camera_deactivate(pcdev); /* ddl@rock-chips.com: Call videobuf_mmap_free here for free the struct video_buffer which malloc in videobuf_alloc */ + #if 0 if (pcdev->vb_vidq_ptr) { videobuf_mmap_free(pcdev->vb_vidq_ptr); pcdev->vb_vidq_ptr = NULL; } + #else + pcdev->vb_vidq_ptr = NULL; + #endif if (pcdev->camera_work) { kfree(pcdev->camera_work); @@ -1436,6 +1440,10 @@ static int rk29_camera_probe(struct platform_device *pdev) exit_free_irq: free_irq(pcdev->irq, pcdev); + if (pcdev->camera_wq) { + destroy_workqueue(pcdev->camera_wq); + pcdev->camera_wq = NULL; + } exit_reqirq: iounmap(pcdev->base); exit_ioremap: @@ -1491,6 +1499,11 @@ static int __devexit rk29_camera_remove(struct platform_device *pdev) free_irq(pcdev->irq, pcdev); + if (pcdev->camera_wq) { + destroy_workqueue(pcdev->camera_wq); + pcdev->camera_wq = NULL; + } + soc_camera_host_unregister(&pcdev->soc_host); res = pcdev->res; -- 2.34.1