Hi Sakari, I tried this patch, and I no longer see the messages in dmesg output when closing the V4L2 device node. Tested-by: Devin Heitmueller <dheitmueller@xxxxxxxxxxxxxx> Thanks, Devin On Fri, Feb 2, 2018 at 8:57 AM, Devin Heitmueller <dheitmueller@xxxxxxxxxxxxxx> wrote: > Hello Sakari, > > Thanks for proposing this patch. I'll give it a try this weekend. > > Regards, > > Devin > > On Fri, Feb 2, 2018 at 5:08 AM, Sakari Ailus > <sakari.ailus@xxxxxxxxxxxxxxx> wrote: >> If buffers were prepared or queued and the buffers were released without >> starting the queue, the finish mem op (corresponding to the prepare mem >> op) was never called to the buffers. >> >> Before commit a136f59c0a1f there was no need to do this as in such a case >> the prepare mem op had not been called yet. Address the problem by >> explicitly calling finish mem op when the queue is stopped if the buffer >> is in either prepared or queued state. >> >> Fixes: a136f59c0a1f ("[media] vb2: Move buffer cache synchronisation to prepare from queue") >> Cc: stable@xxxxxxxxxxxxxxx # for v4.13 and up >> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> >> --- >> Hi Devin, >> >> Could you check whether this will resolve the problem you've found? >> >> Thanks. >> >> drivers/media/common/videobuf2/videobuf2-core.c | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c >> index f7109f827f6e..52a7c1d0a79a 100644 >> --- a/drivers/media/common/videobuf2/videobuf2-core.c >> +++ b/drivers/media/common/videobuf2/videobuf2-core.c >> @@ -1696,6 +1696,15 @@ static void __vb2_queue_cancel(struct vb2_queue *q) >> for (i = 0; i < q->num_buffers; ++i) { >> struct vb2_buffer *vb = q->bufs[i]; >> >> + if (vb->state == VB2_BUF_STATE_PREPARED || >> + vb->state == VB2_BUF_STATE_QUEUED) { >> + unsigned int plane; >> + >> + for (plane = 0; plane < vb->num_planes; ++plane) >> + call_void_memop(vb, finish, >> + vb->planes[plane].mem_priv); >> + } >> + >> if (vb->state != VB2_BUF_STATE_DEQUEUED) { >> vb->state = VB2_BUF_STATE_PREPARED; >> call_void_vb_qop(vb, buf_finish, vb); >> -- >> 2.11.0 >> > > > > -- > Devin J. Heitmueller - Kernel Labs > http://www.kernellabs.com -- Devin J. Heitmueller - Kernel Labs http://www.kernellabs.com