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)