media: uvcvideo: Handle cameras with invalid descriptors
authorRicardo Ribalda <ribalda@chromium.org>
Tue, 20 Sep 2022 14:04:55 +0000 (16:04 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Mar 2023 12:55:33 +0000 (13:55 +0100)
[ Upstream commit 41ddb251c68ac75c101d3a50a68c4629c9055e4c ]

If the source entity does not contain any pads, do not create a link.

Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/usb/uvc/uvc_entity.c

index 7c4d2f93d351373cd70ce47c774ef5501ba933d7..cc68dd24eb42dce5b2846ca52a8dfa499c8aed96 100644 (file)
@@ -37,7 +37,7 @@ static int uvc_mc_create_links(struct uvc_video_chain *chain,
                        continue;
 
                remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
-               if (remote == NULL)
+               if (remote == NULL || remote->num_pads == 0)
                        return -EINVAL;
 
                source = (UVC_ENTITY_TYPE(remote) == UVC_TT_STREAMING)