[media] media: vb2: correct queue initialization order
q->memory entry is initialized to late, so if allocation of memory buffers fails, the buffers might not be freed correctly (q->memory is tested in __vb2_free_mem, which can be called before setting q->memory). Reported-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> CC: Pawel Osciak <pawel@osciak.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
ea42c8ecb2
commit
13b140953a
|
@ -525,6 +525,7 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req)
|
||||||
num_buffers = min_t(unsigned int, req->count, VIDEO_MAX_FRAME);
|
num_buffers = min_t(unsigned int, req->count, VIDEO_MAX_FRAME);
|
||||||
memset(plane_sizes, 0, sizeof(plane_sizes));
|
memset(plane_sizes, 0, sizeof(plane_sizes));
|
||||||
memset(q->alloc_ctx, 0, sizeof(q->alloc_ctx));
|
memset(q->alloc_ctx, 0, sizeof(q->alloc_ctx));
|
||||||
|
q->memory = req->memory;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ask the driver how many buffers and planes per buffer it requires.
|
* Ask the driver how many buffers and planes per buffer it requires.
|
||||||
|
@ -566,8 +567,6 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req)
|
||||||
ret = num_buffers;
|
ret = num_buffers;
|
||||||
}
|
}
|
||||||
|
|
||||||
q->memory = req->memory;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the number of successfully allocated buffers
|
* Return the number of successfully allocated buffers
|
||||||
* to the userspace.
|
* to the userspace.
|
||||||
|
|
Loading…
Reference in a new issue