[ Sasha's backport helper bot ] Hi, Summary of potential issues: ⚠️ Found matching upstream commit but patch is missing proper reference to it Found matching upstream commit: d9fecd096f67a4469536e040a8a10bbfb665918b Status in newer kernel trees: 6.13.y | Present (different SHA1: e515ccef73e2) 6.12.y | Present (different SHA1: 34fb9eb31d66) 6.6.y | Present (different SHA1: 08384382e1db) 6.1.y | Present (different SHA1: 050053a7c0ad) Note: The patch differs from the upstream commit: --- 1: d9fecd096f67a ! 1: 44f5b59535218 media: uvcvideo: Only save async fh if success @@ Commit message Link: https://lore.kernel.org/r/20241203-uvc-fix-async-v6-1-26c867231118@xxxxxxxxxxxx Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> + (cherry picked from commit d9fecd096f67a4469536e040a8a10bbfb665918b) ## drivers/media/usb/uvc/uvc_ctrl.c ## @@ drivers/media/usb/uvc/uvc_ctrl.c: int uvc_ctrl_begin(struct uvc_video_chain *chain) } static int uvc_ctrl_commit_entity(struct uvc_device *dev, -- struct uvc_entity *entity, int rollback, struct uvc_control **err_ctrl) +- struct uvc_entity *entity, int rollback) + struct uvc_fh *handle, + struct uvc_entity *entity, -+ int rollback, -+ struct uvc_control **err_ctrl) ++ int rollback) { struct uvc_control *ctrl; unsigned int i; @@ drivers/media/usb/uvc/uvc_ctrl.c: static int uvc_ctrl_commit_entity(struct uvc_device *dev, - *err_ctrl = ctrl; + + if (ret < 0) return ret; - } + + if (!rollback && handle && + ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS) @@ drivers/media/usb/uvc/uvc_ctrl.c: int __uvc_ctrl_commit(struct uvc_fh *handle, i /* Find the control. */ list_for_each_entry(entity, &chain->entities, chain) { -- ret = uvc_ctrl_commit_entity(chain->dev, entity, rollback, -- &err_ctrl); +- ret = uvc_ctrl_commit_entity(chain->dev, entity, rollback); + ret = uvc_ctrl_commit_entity(chain->dev, handle, entity, -+ rollback, &err_ctrl); - if (ret < 0) { - if (ctrls) - ctrls->error_idx = ++ rollback); + if (ret < 0) + goto done; + } @@ drivers/media/usb/uvc/uvc_ctrl.c: int uvc_ctrl_set(struct uvc_fh *handle, mapping->set(mapping, value, uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT)); @@ drivers/media/usb/uvc/uvc_ctrl.c: int uvc_ctrl_restore_values(struct uvc_device ctrl->dirty = 1; } -- ret = uvc_ctrl_commit_entity(dev, entity, 0, NULL); -+ ret = uvc_ctrl_commit_entity(dev, NULL, entity, 0, NULL); +- ret = uvc_ctrl_commit_entity(dev, entity, 0); ++ ret = uvc_ctrl_commit_entity(dev, NULL, entity, 0); if (ret < 0) return ret; } --- Results of testing on various branches: | Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-5.4.y | Success | Success |