Hi Sergey On Wed, 22 Nov 2023 at 09:01, Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx> wrote: > > On (23/11/22 16:47), Sergey Senozhatsky wrote: > > Can the following happen? > > Consider the following case (when CPU1 experienced a delay, a preemption > or anything): > > > CPU0 CPU1 > > uvc_disconnect() > > uvc_video_stop_streaming() > > usb_set_intfdata() > > uvc_unregister_video() > > > > if (!smp_load(&dev->disconnected)) > > > > smp_store_release(&dev->disconnected, true); > > > > kref_put(&dev->ref, uvc_delete); > > > uvc_video_halt() > > That uvc_video_halt() cannot be legal, right? This patch only takes care of calls to uvc_video_stop_streaming() after .disconnect. Guenter's patch from this series should take care of the concurrent calls. I will resend making it explicit. Thanks! -- Ricardo Ribalda