UPSTREAM: usb: gadget: uvc: Remove nested locking
When handling error status from uvcg_video_usb_req_queue, uvc_video_complete currently calls uvcg_queue_cancel with video->req_lock held. uvcg_queue_cancel internally locks queue->irqlock, which nests queue->irqlock inside video->req_lock. This isn't a functional bug at the moment, but does open up possibilities for ABBA deadlocks in the future. This patch fixes the accidental nesting by dropping video->req_lock before calling uvcg_queue_cancel. Fixes: 6acba034 ("usb:gadget:uvc Do not use worker thread to pump isoc usb requests") Signed-off-by:Avichal Rakesh <arakesh@google.com> Link: https://lore.kernel.org/r/20240104215009.2252452-2-arakesh@google.com Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org> Bug: 314338409 (cherry picked from commit 9866dc43) Change-Id: Ic50069f8584e0d236463a084b12cabcc845d3b6a Signed-off-by:
Avichal Rakesh <arakesh@google.com>
Please register or sign in to comment