mirror of https://gitee.com/openkylin/linux.git
Staging: dt3155v4l: correcting a bug
dt3155v4l driver, as in -rc6-next-20100506 has a BUG. When it modifies q->int_ops structure in videobuf-dma-contig module the change is visible for all other modules using it. Make a local copy of this structure and use its modification to solve the bug. Signed-off-by: Marin Mitov <mitov@issp.bas.bg> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
48f658bb3d
commit
b8aab12781
|
@ -612,9 +612,14 @@ dt3155_queue_dma_contig_init(struct videobuf_queue *q,
|
|||
unsigned int msize,
|
||||
void *priv)
|
||||
{
|
||||
struct dt3155_priv *pd = q->priv_data;
|
||||
|
||||
videobuf_queue_dma_contig_init(q, ops, dev, irqlock,
|
||||
type, field, msize, priv);
|
||||
/* overwrite with our methods */
|
||||
/* replace with local copy */
|
||||
pd->qt_ops = *q->int_ops;
|
||||
q->int_ops = &pd->qt_ops;
|
||||
/* and overwrite with our methods */
|
||||
q->int_ops->iolock = dt3155_iolock;
|
||||
q->int_ops->mmap_mapper = dt3155_mmap_mapper;
|
||||
q->int_ops->sync = dt3155_sync_for_cpu;
|
||||
|
|
|
@ -185,6 +185,7 @@ struct dt3155_stats {
|
|||
* @curr_buf: pointer to curren buffer
|
||||
* @thread pointer to worker thraed
|
||||
* @irq_handler: irq handler for the driver
|
||||
* @qt_ops local copy of dma-contig qtype_ops
|
||||
* @dmaq queue for dma buffers
|
||||
* @do_dma wait queue of the kernel thread
|
||||
* @mux: mutex to protect the instance
|
||||
|
@ -204,6 +205,7 @@ struct dt3155_priv {
|
|||
struct videobuf_buffer *curr_buf;
|
||||
struct task_struct *thread;
|
||||
irq_handler_t irq_handler;
|
||||
struct videobuf_qtype_ops qt_ops;
|
||||
struct list_head dmaq;
|
||||
wait_queue_head_t do_dma;
|
||||
struct mutex mux;
|
||||
|
|
Loading…
Reference in New Issue