<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,2 +1,2 @@
 #!/bin/sh
-echo &quot;#define DRIVER_VERSION	\&quot;SVN r223-flip\&quot;&quot;
+echo &quot;#define DRIVER_VERSION	\&quot;SVN r246-flip\&quot;&quot;</diff>
      <filename>svn-version.sh</filename>
    </modified>
    <modified>
      <diff>@@ -9,6 +9,11 @@
 #endif
 #endif
 
+#ifdef CONFIG_INPUT
+#undef CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV
+#define CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV 1
+#endif
+
 #if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,18)
 /*
  * Extended control API
@@ -177,11 +182,15 @@ enum  v4l2_exposure_auto_type {
 
 #ifdef __KERNEL__
 
+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,12)
+#define __nocast
+#endif
+
 #if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,14)
 /*
  * kzalloc()
  */
-typedef unsigned int __nocast gfp_flags;
+typedef unsigned int __nocast gfp_t;
 
 static inline void *
 kzalloc(size_t size, gfp_t gfp_flags)
@@ -197,6 +206,8 @@ kzalloc(size_t size, gfp_t gfp_flags)
 /*
  * vm_insert_page()
  */
+#include &lt;linux/mm.h&gt;
+
 static inline int
 vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
 		struct page *page)
@@ -248,12 +259,24 @@ v4l_printk_ioctl(unsigned int cmd)
 #include &lt;asm/mutex.h&gt;
 #endif
 
+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,18)
+#include &lt;linux/videodev.h&gt;
+#endif
+
 #if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,19)
 /*
  * usb_endpoint_* functions
  *
  * Included in Linux 2.6.19
+ * Backported to 2.6.18 in Red Hat Enterprise Linux 5.2
  */
+#ifdef RHEL_RELEASE_CODE
+#if RHEL_RELEASE_CODE &lt; RHEL_RELEASE_VERSION(5,2)
+#define RHEL_HAS_USB_ENDPOINT
+#endif
+#endif
+
+#ifndef RHEL_HAS_USB_ENDPOINT
 static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
 {
 	return ((epd-&gt;bEndpointAddress &amp; USB_ENDPOINT_DIR_MASK) == USB_DIR_IN);
@@ -281,6 +304,7 @@ static inline int usb_endpoint_is_int_in(const struct usb_endpoint_descriptor *e
 {
 	return (usb_endpoint_xfer_int(epd) &amp;&amp; usb_endpoint_dir_in(epd));
 }
+#endif /* RHEL_HAS_USB_ENDPOINT */
 
 /*
  * USB auto suspend
@@ -301,6 +325,11 @@ static inline void usb_autopm_put_interface(struct usb_interface *intf)
  */
 #define list_first_entry(ptr, type, member) \
 	list_entry((ptr)-&gt;next, type, member)
+
+/*
+ * uninitialized_var() macro
+ */
+#define uninitialized_var(x) x
 #endif
 
 #endif /* __KERNEL__ */</diff>
      <filename>uvc_compat.h</filename>
    </modified>
    <modified>
      <diff>@@ -197,8 +197,8 @@ static struct uvc_menu_info power_line_frequency_controls[] = {
 };
 
 static struct uvc_menu_info exposure_auto_controls[] = {
-	{ 1, &quot;Manual Mode&quot; },
 	{ 2, &quot;Auto Mode&quot; },
+	{ 1, &quot;Manual Mode&quot; },
 	{ 4, &quot;Shutter Priority Mode&quot; },
 	{ 8, &quot;Aperture Priority Mode&quot; },
 };
@@ -587,13 +587,18 @@ int uvc_query_v4l2_ctrl(struct uvc_video_device *video,
 	struct uvc_control_mapping *mapping;
 	struct uvc_menu_info *menu;
 	unsigned int i;
-	__u8 data[8];
+	__u8 *data;
 	int ret;
 
 	ctrl = uvc_find_control(video, v4l2_ctrl-&gt;id, &amp;mapping);
 	if (ctrl == NULL)
 		return -EINVAL;
 
+	data = kmalloc(8, GFP_KERNEL);
+	if (data == NULL)
+		return -ENOMEM;
+
+	memset(v4l2_ctrl, 0, sizeof *v4l2_ctrl);
 	v4l2_ctrl-&gt;id = mapping-&gt;id;
 	v4l2_ctrl-&gt;type = mapping-&gt;v4l2_type;
 	strncpy(v4l2_ctrl-&gt;name, mapping-&gt;name, sizeof v4l2_ctrl-&gt;name);
@@ -605,12 +610,13 @@ int uvc_query_v4l2_ctrl(struct uvc_video_device *video,
 	if (ctrl-&gt;info-&gt;flags &amp; UVC_CONTROL_GET_DEF) {
 		if ((ret = uvc_query_ctrl(video-&gt;dev, GET_DEF, ctrl-&gt;entity-&gt;id,
 				video-&gt;dev-&gt;intfnum, ctrl-&gt;info-&gt;selector,
-				&amp;data, ctrl-&gt;info-&gt;size)) &lt; 0)
-			return ret;
+				data, ctrl-&gt;info-&gt;size)) &lt; 0)
+			goto out;
 		v4l2_ctrl-&gt;default_value = uvc_get_le_value(data, mapping);
 	}
 
-	if (mapping-&gt;v4l2_type == V4L2_CTRL_TYPE_MENU) {
+	switch (mapping-&gt;v4l2_type) {
+	case V4L2_CTRL_TYPE_MENU:
 		v4l2_ctrl-&gt;minimum = 0;
 		v4l2_ctrl-&gt;maximum = mapping-&gt;menu_count - 1;
 		v4l2_ctrl-&gt;step = 1;
@@ -623,32 +629,46 @@ int uvc_query_v4l2_ctrl(struct uvc_video_device *video,
 			}
 		}
 
-		return 0;
+		ret = 0;
+		goto out;
+
+	case V4L2_CTRL_TYPE_BOOLEAN:
+		v4l2_ctrl-&gt;minimum = 0;
+		v4l2_ctrl-&gt;maximum = 1;
+		v4l2_ctrl-&gt;step = 1;
+		ret = 0;
+		goto out;
+
+	default:
+		break;
 	}
 
 	if (ctrl-&gt;info-&gt;flags &amp; UVC_CONTROL_GET_MIN) {
 		if ((ret = uvc_query_ctrl(video-&gt;dev, GET_MIN, ctrl-&gt;entity-&gt;id,
 				video-&gt;dev-&gt;intfnum, ctrl-&gt;info-&gt;selector,
-				&amp;data, ctrl-&gt;info-&gt;size)) &lt; 0)
-			return ret;
+				data, ctrl-&gt;info-&gt;size)) &lt; 0)
+			goto out;
 		v4l2_ctrl-&gt;minimum = uvc_get_le_value(data, mapping);
 	}
 	if (ctrl-&gt;info-&gt;flags &amp; UVC_CONTROL_GET_MAX) {
 		if ((ret = uvc_query_ctrl(video-&gt;dev, GET_MAX, ctrl-&gt;entity-&gt;id,
 				video-&gt;dev-&gt;intfnum, ctrl-&gt;info-&gt;selector,
-				&amp;data, ctrl-&gt;info-&gt;size)) &lt; 0)
-			return ret;
+				data, ctrl-&gt;info-&gt;size)) &lt; 0)
+			goto out;
 		v4l2_ctrl-&gt;maximum = uvc_get_le_value(data, mapping);
 	}
 	if (ctrl-&gt;info-&gt;flags &amp; UVC_CONTROL_GET_RES) {
 		if ((ret = uvc_query_ctrl(video-&gt;dev, GET_RES, ctrl-&gt;entity-&gt;id,
 				video-&gt;dev-&gt;intfnum, ctrl-&gt;info-&gt;selector,
-				&amp;data, ctrl-&gt;info-&gt;size)) &lt; 0)
-			return ret;
+				data, ctrl-&gt;info-&gt;size)) &lt; 0)
+			goto out;
 		v4l2_ctrl-&gt;step = uvc_get_le_value(data, mapping);
 	}
 
-	return 0;
+	ret = 0;
+out:
+	kfree(data);
+	return ret;
 }
 
 </diff>
      <filename>uvc_ctrl.c</filename>
    </modified>
    <modified>
      <diff>@@ -1461,9 +1461,13 @@ static int uvc_register_video(struct uvc_device *dev)
 	 * unregistered before the reference is released, so we don't need to
 	 * get another one.
 	 */
+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,27)
 	vdev-&gt;dev = &amp;dev-&gt;intf-&gt;dev;
 	vdev-&gt;type = 0;
 	vdev-&gt;type2 = 0;
+#else
+	vdev-&gt;parent = &amp;dev-&gt;intf-&gt;dev;
+#endif
 	vdev-&gt;minor = -1;
 	vdev-&gt;fops = &amp;uvc_fops;
 	vdev-&gt;release = video_device_release;
@@ -1636,13 +1640,16 @@ static void uvc_disconnect(struct usb_interface *intf)
 	 * reference to the uvc_device instance after uvc_v4l2_open() received
 	 * the pointer to the device (video_devdata) but before it got the
 	 * chance to increase the reference count (kref_get).
+	 *
+	 * Note that the reference can't be released with the lock held,
+	 * otherwise a AB-BA deadlock can occur with the videodev_lock that
+	 * videodev acquires in videodev_open() and video_unregister_device().
 	 */
 	mutex_lock(&amp;uvc_driver.open_mutex);
-
 	dev-&gt;state |= UVC_DEV_DISCONNECTED;
-	kref_put(&amp;dev-&gt;kref, uvc_delete);
-
 	mutex_unlock(&amp;uvc_driver.open_mutex);
+
+	kref_put(&amp;dev-&gt;kref, uvc_delete);
 }
 
 static int uvc_suspend(struct usb_interface *intf, pm_message_t message)
@@ -1665,7 +1672,7 @@ static int uvc_suspend(struct usb_interface *intf, pm_message_t message)
 	return uvc_video_suspend(&amp;dev-&gt;video);
 }
 
-static int uvc_resume(struct usb_interface *intf)
+static int __uvc_resume(struct usb_interface *intf, int reset)
 {
 	struct uvc_device *dev = usb_get_intfdata(intf);
 	int ret;
@@ -1674,7 +1681,7 @@ static int uvc_resume(struct usb_interface *intf)
 		intf-&gt;cur_altsetting-&gt;desc.bInterfaceNumber);
 
 	if (intf-&gt;cur_altsetting-&gt;desc.bInterfaceSubClass == SC_VIDEOCONTROL) {
-		if ((ret = uvc_ctrl_resume_device(dev)) &lt; 0)
+		if (reset &amp;&amp; (ret = uvc_ctrl_resume_device(dev)) &lt; 0)
 			return ret;
 
 		return uvc_status_resume(dev);
@@ -1689,6 +1696,18 @@ static int uvc_resume(struct usb_interface *intf)
 	return uvc_video_resume(&amp;dev-&gt;video);
 }
 
+static int uvc_resume(struct usb_interface *intf)
+{
+	return __uvc_resume(intf, 0);
+}
+
+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,23)
+static int uvc_reset_resume(struct usb_interface *intf)
+{
+	return __uvc_resume(intf, 1);
+}
+#endif
+
 /* ------------------------------------------------------------------------
  * Driver initialization and cleanup
  */
@@ -1829,6 +1848,15 @@ static struct usb_device_id uvc_ids[] = {
 	  .bInterfaceSubClass	= 1,
 	  .bInterfaceProtocol	= 0,
 	  .driver_info		= UVC_QUIRK_STREAM_NO_FID },
+	/* Asus F9SG */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x174f,
+	  .idProduct		= 0x8a31,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= 0,
+	  .driver_info		= UVC_QUIRK_STREAM_NO_FID },
 	/* Syntek (Asus U3S) */
 	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
 				| USB_DEVICE_ID_MATCH_INT_INFO,
@@ -1877,7 +1905,7 @@ static struct usb_device_id uvc_ids[] = {
 	  .bInterfaceSubClass	= 1,
 	  .bInterfaceProtocol	= 0,
 	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
-	/* Packard Bell OEM Webcam */
+	/* Packard Bell OEM Webcam - Bison Electronics */
 	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
 				| USB_DEVICE_ID_MATCH_INT_INFO,
 	  .idVendor		= 0x5986,
@@ -1886,7 +1914,7 @@ static struct usb_device_id uvc_ids[] = {
 	  .bInterfaceSubClass	= 1,
 	  .bInterfaceProtocol	= 0,
 	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
-	/* Acer Crystal Eye webcam */
+	/* Acer Crystal Eye webcam - Bison Electronics */
 	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
 				| USB_DEVICE_ID_MATCH_INT_INFO,
 	  .idVendor		= 0x5986,
@@ -1895,7 +1923,16 @@ static struct usb_device_id uvc_ids[] = {
 	  .bInterfaceSubClass	= 1,
 	  .bInterfaceProtocol	= 0,
 	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
-	/* Acer OrbiCam - Unknown vendor */
+	/* Medion Akoya Mini E1210 - Bison Electronics */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x5986,
+	  .idProduct		= 0x0141,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= 0,
+	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
+	/* Acer OrbiCam - Bison Electronics */
 	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
 				| USB_DEVICE_ID_MATCH_INT_INFO,
 	  .idVendor		= 0x5986,
@@ -1904,6 +1941,33 @@ static struct usb_device_id uvc_ids[] = {
 	  .bInterfaceSubClass	= 1,
 	  .bInterfaceProtocol	= 0,
 	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
+	/*  Fujitsu Amilo SI2636 - Bison Electronics */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x5986,
+	  .idProduct		= 0x0202,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= 0,
+	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
+	/* Bison Electronics */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x5986,
+	  .idProduct		= 0x0300,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= 0,
+	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
+	/* Clevo M570TU - Bison Electronics */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x5986,
+	  .idProduct		= 0x0303,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= 0,
+	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
 	/* Generic USB Video Class */
 	{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, 0) },
 	{}
@@ -1921,6 +1985,9 @@ struct uvc_driver uvc_driver = {
 		.disconnect	= uvc_disconnect,
 		.suspend	= uvc_suspend,
 		.resume		= uvc_resume,
+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,23)
+		.reset_resume	= uvc_reset_resume,
+#endif
 		.id_table	= uvc_ids,
 #if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,19)
 		.supports_autosuspend = 1,</diff>
      <filename>uvc_driver.c</filename>
    </modified>
    <modified>
      <diff>@@ -26,6 +26,7 @@
 /* --------------------------------------------------------------------------
  * Input device
  */
+#ifdef CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV
 static int uvc_input_init(struct uvc_device *dev)
 {
 	struct usb_device *udev = dev-&gt;udev;
@@ -75,6 +76,19 @@ static void uvc_input_cleanup(struct uvc_device *dev)
 		input_unregister_device(dev-&gt;input);
 }
 
+static void uvc_input_report_key(struct uvc_device *dev, unsigned int code,
+	int value)
+{
+	if (dev-&gt;input)
+		input_report_key(dev-&gt;input, code, value);
+}
+
+#else
+#define uvc_input_init(dev)
+#define uvc_input_cleanup(dev)
+#define uvc_input_report_key(dev, code, value)
+#endif /* CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV */
+
 /* --------------------------------------------------------------------------
  * Status interrupt endpoint
  */
@@ -91,8 +105,7 @@ static void uvc_event_streaming(struct uvc_device *dev, __u8 *data, int len)
 			return;
 		uvc_trace(UVC_TRACE_STATUS, &quot;Button (intf %u) %s len %d\n&quot;,
 			data[1], data[3] ? &quot;pressed&quot; : &quot;released&quot;, len);
-		if (dev-&gt;input)
-			input_report_key(dev-&gt;input, BTN_0, data[3]);
+		uvc_input_report_key(dev, BTN_0, data[3]);
 	} else {
 		uvc_trace(UVC_TRACE_STATUS, &quot;Stream %u error event %02x %02x &quot;
 			&quot;len %d.\n&quot;, data[1], data[2], data[3], len);</diff>
      <filename>uvc_status.c</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,9 @@
 #if LINUX_VERSION_CODE &gt; KERNEL_VERSION(2,6,15)
 #include &lt;media/v4l2-common.h&gt;
 #endif
+#if LINUX_VERSION_CODE &gt; KERNEL_VERSION(2,6,26)
+#include &lt;media/v4l2-ioctl.h&gt;
+#endif
 
 #include &quot;uvcvideo.h&quot;
 
@@ -1035,7 +1038,7 @@ static int uvc_v4l2_mmap(struct file *file, struct vm_area_struct *vma)
 {
 	struct video_device *vdev = video_devdata(file);
 	struct uvc_video_device *video = video_get_drvdata(vdev);
-	struct uvc_buffer *buffer;
+	struct uvc_buffer *uninitialized_var(buffer);
 	struct page *page;
 	unsigned long addr, start, size;
 	unsigned int i;</diff>
      <filename>uvc_v4l2.c</filename>
    </modified>
    <modified>
      <diff>@@ -92,17 +92,20 @@ static void uvc_fixup_buffer_size(struct uvc_video_device *video,
 static int uvc_get_video_ctrl(struct uvc_video_device *video,
 	struct uvc_streaming_control *ctrl, int probe, __u8 query)
 {
-	__u8 data[34];
-	__u8 size;
+	__u8 *data;
+	__u16 size;
 	int ret;
 
 	size = video-&gt;dev-&gt;uvc_version &gt;= 0x0110 ? 34 : 26;
+	data = kmalloc(size, GFP_KERNEL);
+	if (data == NULL)
+		return -ENOMEM;
+
 	ret = __uvc_query_ctrl(video-&gt;dev, query, 0, video-&gt;streaming-&gt;intfnum,
-		probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, &amp;data, size,
+		probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, data, size,
 		UVC_CTRL_STREAMING_TIMEOUT);
-
 	if (ret &lt; 0)
-		return ret;
+		goto out;
 
 	ctrl-&gt;bmHint = le16_to_cpup((__le16 *)&amp;data[0]);
 	ctrl-&gt;bFormatIndex = data[2];
@@ -138,17 +141,22 @@ static int uvc_get_video_ctrl(struct uvc_video_device *video,
 	 */
 	uvc_fixup_buffer_size(video, ctrl);
 
-	return 0;
+out:
+	kfree(data);
+	return ret;
 }
 
 int uvc_set_video_ctrl(struct uvc_video_device *video,
 	struct uvc_streaming_control *ctrl, int probe)
 {
-	__u8 data[34];
-	__u8 size;
+	__u8 *data;
+	__u16 size;
+	int ret;
 
 	size = video-&gt;dev-&gt;uvc_version &gt;= 0x0110 ? 34 : 26;
-	memset(data, 0, sizeof data);
+	data = kzalloc(size, GFP_KERNEL);
+	if (data == NULL)
+		return -ENOMEM;
 
 	*(__le16 *)&amp;data[0] = cpu_to_le16(ctrl-&gt;bmHint);
 	data[2] = ctrl-&gt;bFormatIndex;
@@ -176,10 +184,13 @@ int uvc_set_video_ctrl(struct uvc_video_device *video,
 		data[33] = ctrl-&gt;bMaxVersion;
 	}
 
-	return __uvc_query_ctrl(video-&gt;dev, SET_CUR, 0,
+	ret = __uvc_query_ctrl(video-&gt;dev, SET_CUR, 0,
 		video-&gt;streaming-&gt;intfnum,
-		probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, &amp;data, size,
+		probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, data, size,
 		UVC_CTRL_STREAMING_TIMEOUT);
+
+	kfree(data);
+	return ret;
 }
 
 int uvc_probe_video(struct uvc_video_device *video,
@@ -446,7 +457,8 @@ static void uvc_video_decode_isoc(struct urb *urb,
 			urb-&gt;iso_frame_desc[i].actual_length - ret);
 
 		/* Process the header again. */
-		uvc_video_decode_end(video, buf, mem, ret);
+		uvc_video_decode_end(video, buf, mem,
+			urb-&gt;iso_frame_desc[i].actual_length);
 
 		if (buf-&gt;state == UVC_BUF_STATE_DONE ||
 		    buf-&gt;state == UVC_BUF_STATE_ERROR)
@@ -503,7 +515,7 @@ static void uvc_video_decode_bulk(struct urb *urb,
 	    video-&gt;bulk.payload_size &gt;= video-&gt;bulk.max_payload_size) {
 		if (!video-&gt;bulk.skip_payload &amp;&amp; buf != NULL) {
 			uvc_video_decode_end(video, buf, video-&gt;bulk.header,
-				video-&gt;bulk.header_size);
+				video-&gt;bulk.payload_size);
 			if (buf-&gt;state == UVC_BUF_STATE_DONE ||
 			    buf-&gt;state == UVC_BUF_STATE_ERROR)
 				buf = uvc_queue_next_buffer(&amp;video-&gt;queue, buf);</diff>
      <filename>uvc_video.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>02d86af7a99b61a687f04cddf3c7bf24c08295d4</id>
    </parent>
  </parents>
  <author>
    <name>Derek Bruce</name>
    <email>dbruce@gmail.com</email>
  </author>
  <url>http://github.com/dfu/linux-uvc_flip/commit/b8f85e01521f255939eb37d019ea9fe569ddb015</url>
  <id>b8f85e01521f255939eb37d019ea9fe569ddb015</id>
  <committed-date>2008-09-04T03:39:30-07:00</committed-date>
  <authored-date>2008-09-04T03:39:30-07:00</authored-date>
  <message>Updated to SVN-246 of linux-uvc.</message>
  <tree>9ef4bc8e460e17fa87d0ee134d70cb3c3bf9a239</tree>
  <committer>
    <name>Derek Bruce</name>
    <email>dbruce@gmail.com</email>
  </committer>
</commit>
