summaryrefslogtreecommitdiffstats
path: root/ucvideo-fix-crash-when-linking-entities.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@redhat.com>2011-09-07 12:23:33 -0400
committerJosh Boyer <jwboyer@redhat.com>2011-09-07 12:31:24 -0400
commit4cf702284695eff34c6063ea8dfb19a0c83d11ad (patch)
tree14e09775cfbed95c9e02b2909dc3815b311aac39 /ucvideo-fix-crash-when-linking-entities.patch
parent82e80513710d4b0cdd8986b1455badcc0f78fd5f (diff)
downloadkernel-4cf702284695eff34c6063ea8dfb19a0c83d11ad.tar.gz
kernel-4cf702284695eff34c6063ea8dfb19a0c83d11ad.tar.xz
kernel-4cf702284695eff34c6063ea8dfb19a0c83d11ad.zip
Fix for rhbz 735437
Diffstat (limited to 'ucvideo-fix-crash-when-linking-entities.patch')
-rw-r--r--ucvideo-fix-crash-when-linking-entities.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/ucvideo-fix-crash-when-linking-entities.patch b/ucvideo-fix-crash-when-linking-entities.patch
new file mode 100644
index 000000000..69f86d64c
--- /dev/null
+++ b/ucvideo-fix-crash-when-linking-entities.patch
@@ -0,0 +1,34 @@
+The uvc_mc_register_entity() function wrongfully selects the
+media_entity associated with a UVC entity when creating links. This
+results in access to uninitialized media_entity structures and can hit a
+BUG_ON statement in media_entity_create_link(). Fix it.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+---
+ drivers/media/video/uvc/uvc_entity.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+This patch should fix a v3.0 regression that results in a kernel crash as
+reported in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637740 and
+https://bugzilla.redhat.com/show_bug.cgi?id=735437.
+
+Test results will be welcome.
+
+diff --git a/drivers/media/video/uvc/uvc_entity.c b/drivers/media/video/uvc/uvc_entity.c
+index 48fea37..29e2399 100644
+--- a/drivers/media/video/uvc/uvc_entity.c
++++ b/drivers/media/video/uvc/uvc_entity.c
+@@ -49,7 +49,7 @@ static int uvc_mc_register_entity(struct uvc_video_chain *chain,
+ if (remote == NULL)
+ return -EINVAL;
+
+- source = (UVC_ENTITY_TYPE(remote) != UVC_TT_STREAMING)
++ source = (UVC_ENTITY_TYPE(remote) == UVC_TT_STREAMING)
+ ? (remote->vdev ? &remote->vdev->entity : NULL)
+ : &remote->subdev.entity;
+ if (source == NULL)
+--
+Regards,
+
+Laurent Pinchart
+