[ Sasha's backport helper bot ] Hi, Found matching upstream commit: 3dd075fe8ebbc6fcbf998f81a75b8c4b159a6195 WARNING: Author mismatch between patch and found commit: Backport author: Ricardo Ribalda <ribalda@xxxxxxxxxxxx> Commit author: Thadeu Lima de Souza Cascardo <cascardo@xxxxxxxxxx> Status in newer kernel trees: 6.12.y | Not found 6.6.y | Not found 6.1.y | Not found 5.15.y | Not found 5.10.y | Not found Note: The patch differs from the upstream commit: --- 1: 3dd075fe8ebbc ! 1: 9b7a621838d34 media: uvcvideo: Require entities to have a non-zero unique ID @@ Commit message Link: https://lore.kernel.org/r/20240913180601.1400596-2-cascardo@xxxxxxxxxx Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> + (cherry picked from commit 3dd075fe8ebbc6fcbf998f81a75b8c4b159a6195) ## drivers/media/usb/uvc/uvc_driver.c ## -@@ drivers/media/usb/uvc/uvc_driver.c: static const u8 uvc_media_transport_input_guid[16] = - UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT; - static const u8 uvc_processing_guid[16] = UVC_GUID_UVC_PROCESSING; +@@ drivers/media/usb/uvc/uvc_driver.c: static int uvc_parse_streaming(struct uvc_device *dev, + return ret; + } --static struct uvc_entity *uvc_alloc_entity(u16 type, u16 id, +-static struct uvc_entity *uvc_alloc_entity(u16 type, u8 id, - unsigned int num_pads, unsigned int extra_size) +static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type, + u16 id, unsigned int num_pads, @@ drivers/media/usb/uvc/uvc_driver.c: static const u8 uvc_media_transport_input_gu extra_size = roundup(extra_size, sizeof(*entity->pads)); if (num_pads) num_inputs = type & UVC_TERM_OUTPUT ? num_pads : num_pads - 1; -@@ drivers/media/usb/uvc/uvc_driver.c: static struct uvc_entity *uvc_alloc_entity(u16 type, u16 id, +@@ drivers/media/usb/uvc/uvc_driver.c: static struct uvc_entity *uvc_alloc_entity(u16 type, u8 id, + num_inputs; entity = kzalloc(size, GFP_KERNEL); if (entity == NULL) @@ drivers/media/usb/uvc/uvc_driver.c: static int uvc_parse_vendor_control(struct u + if (IS_ERR(unit)) + return PTR_ERR(unit); - memcpy(unit->guid, &buffer[4], 16); + memcpy(unit->extension.guidExtensionCode, &buffer[4], 16); unit->extension.bNumControls = buffer[20]; @@ drivers/media/usb/uvc/uvc_driver.c: static int uvc_parse_standard_control(struct uvc_device *dev, return -EINVAL; @@ drivers/media/usb/uvc/uvc_driver.c: static int uvc_parse_standard_control(struct + if (IS_ERR(unit)) + return PTR_ERR(unit); - memcpy(unit->guid, &buffer[4], 16); + memcpy(unit->extension.guidExtensionCode, &buffer[4], 16); unit->extension.bNumControls = buffer[20]; -@@ drivers/media/usb/uvc/uvc_driver.c: static int uvc_gpio_parse(struct uvc_device *dev) - return dev_err_probe(&dev->udev->dev, irq, - "No IRQ for privacy GPIO\n"); - -- unit = uvc_alloc_entity(UVC_EXT_GPIO_UNIT, UVC_EXT_GPIO_UNIT_ID, 0, 1); -- if (!unit) -- return -ENOMEM; -+ unit = uvc_alloc_new_entity(dev, UVC_EXT_GPIO_UNIT, -+ UVC_EXT_GPIO_UNIT_ID, 0, 1); -+ if (IS_ERR(unit)) -+ return PTR_ERR(unit); - - unit->gpio.gpio_privacy = gpio_privacy; - unit->gpio.irq = irq; --- Results of testing on various branches: | Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-5.10.y | Success | Success |