camera(uvc): fix kernel may panic when close uvc camera,because uninit tasklet after...
authorddl <ddl@rockchip.com>
Fri, 2 Sep 2011 03:57:01 +0000 (11:57 +0800)
committerddl <ddl@rockchip.com>
Fri, 2 Sep 2011 03:57:01 +0000 (11:57 +0800)
drivers/media/video/uvc/uvc_video.c

index 2dd8dc9671575090c00bf280c75750f11c2a5fa6..2d44c1f6f12676e18384130fc4691f4c57190a34 100755 (executable)
@@ -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)