From: Satendra Singh Thakur <satendra.t@xxxxxxxxxxx> When the func vb2_core_reqbufs is called first time after vb2_core_queue_init(), the condition q->memory != memory always gets satisfied, since q->memory was set to 0 at vb2_core_queue_init(). After the condition is true, unnecessary calls to __vb2_queue_cancel() and __vb2_queue_free() are done. in such case, *count is non-zero, q->num_buffers is zero and q->memory is 0, which is not equal to memory field *count=N, q->num_buffers=0, q->memory != memory. [mchehab@xxxxxxxxxxxxxxxx: fix checkpatch issues] Signed-off-by: Satendra Singh Thakur <satendra.t@xxxxxxxxxxx> Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> --- drivers/media/v4l2-core/videobuf2-core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index cb115ba6a1d2..21017b478a34 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c @@ -662,7 +662,8 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory, return -EBUSY; } - if (*count == 0 || q->num_buffers != 0 || q->memory != memory) { + if (*count == 0 || q->num_buffers != 0 || + (q->memory && q->memory != memory)) { /* * We already have buffers allocated, so first check if they * are not in use and can be freed. -- 2.14.3 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html