From bb2d646b32c1cde8ec56a2ffa5cb401d76f9cd93 Mon Sep 17 00:00:00 2001 From: ddl Date: Fri, 2 Sep 2011 11:57:01 +0800 Subject: [PATCH] camera(uvc): fix kernel may panic when close uvc camera,because uninit tasklet after uninit urb in uvc_uninit_video --- drivers/media/video/uvc/uvc_video.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c index 2dd8dc967157..2d44c1f6f126 100755 --- a/drivers/media/video/uvc/uvc_video.c +++ b/drivers/media/video/uvc/uvc_video.c @@ -843,15 +843,17 @@ static void uvc_uninit_video(struct uvc_streaming *stream, int free_buffers) if (urb == NULL) continue; - usb_kill_urb(urb); - usb_free_urb(urb); - stream->urb[i] = NULL; - /* ddl@rock-chips.com */ + /* ddl@rock-chips.com: Tasklet must be kill before kill urb in uninit */ if (stream->tasklet[i]) { tasklet_kill(stream->tasklet[i]); kfree(stream->tasklet[i]); stream->tasklet[i] = NULL; } + + usb_kill_urb(urb); + usb_free_urb(urb); + stream->urb[i] = NULL; + } if (free_buffers) -- 2.34.1