From: ddl <ddl@rockchip.com> Date: Fri, 2 Sep 2011 03:57:01 +0000 (+0800) Subject: camera(uvc): fix kernel may panic when close uvc camera,because uninit tasklet after... X-Git-Tag: firefly_0821_release~9767^2~48 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bb2d646b32c1cde8ec56a2ffa5cb401d76f9cd93;p=firefly-linux-kernel-4.4.55.git camera(uvc): fix kernel may panic when close uvc camera,because uninit tasklet after uninit urb in uvc_uninit_video --- 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)