OSDN Git Service

Merge tag 'v4.4.214' into 10
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / drivers / media / usb / uvc / uvc_driver.c
index ebd1b88..9cd0268 100644 (file)
@@ -1411,6 +1411,11 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
                        break;
                if (forward == prev)
                        continue;
+               if (forward->chain.next || forward->chain.prev) {
+                       uvc_trace(UVC_TRACE_DESCR, "Found reference to "
+                               "entity %d already in chain.\n", forward->id);
+                       return -EINVAL;
+               }
 
                switch (UVC_ENTITY_TYPE(forward)) {
                case UVC_VC_EXTENSION_UNIT:
@@ -1492,6 +1497,13 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
                                return -1;
                        }
 
+                       if (term->chain.next || term->chain.prev) {
+                               uvc_trace(UVC_TRACE_DESCR, "Found reference to "
+                                       "entity %d already in chain.\n",
+                                       term->id);
+                               return -EINVAL;
+                       }
+
                        if (uvc_trace_param & UVC_TRACE_PROBE)
                                printk(" %d", term->id);