From: ddl Date: Sat, 1 Jan 2011 13:38:08 +0000 (+0800) Subject: camera:videobuf free invalidatemporary for voip X-Git-Tag: firefly_0821_release~10843 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9c06dbb99aee7bcd47421376882e6db7d4f9d7bd;p=firefly-linux-kernel-4.4.55.git camera:videobuf free invalidatemporary for voip --- 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;