/** * __vb2_queue_free() - free the queue - video memory and related information * and return the queue to an uninitialized state. Might be called even if the * queue has already been freed. */ static void __vb2_queue_free(struct vb2_queue *q) { unsigned int buffer; /* Call driver-provided cleanup function for each buffer, if provided */ if (q->ops->buf_cleanup) { for (buffer = 0; buffer < q->num_buffers; ++buffer) { if (NULL == q->bufs[buffer]) continue; q->ops->buf_cleanup(q->bufs[buffer]); } } /* Release video buffer memory */ __vb2_free_mem(q); /* Free videobuf buffers */ for (buffer = 0; buffer < q->num_buffers; ++buffer) { kfree(q->bufs[buffer]); q->bufs[buffer] = NULL; } q->num_buffers = 0; q->memory = 0; }
static void __vb2_queue_free(struct vb2_queue *q) { unsigned int buffer; if (q->ops->buf_cleanup) { for (buffer = 0; buffer < q->num_buffers; ++buffer) { if (NULL == q->bufs[buffer]) continue; q->ops->buf_cleanup(q->bufs[buffer]); } } __vb2_free_mem(q); for (buffer = 0; buffer < q->num_buffers; ++buffer) { kfree(q->bufs[buffer]); q->bufs[buffer] = NULL; } q->num_buffers = 0; q->memory = 0; }