* [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock
@ 2013-02-07 0:03 John Sheu
2013-02-07 0:03 ` [PATCH 2/3] [media]: v4l2-mem2mem: drop rdy_queue on STREAMOFF John Sheu
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: John Sheu @ 2013-02-07 0:03 UTC (permalink / raw)
To: linux-media; +Cc: John Sheu, John Sheu
From: John Sheu <sheu@chromium.org>
In v4l2_m2m_try_schedule(), use the CAPTURE queue lock when accessing
the CAPTURE queue, instead of relying on just holding the OUTPUT queue
lock.
Signed-off-by: John Sheu <sheu@google.com>
---
drivers/media/v4l2-core/v4l2-mem2mem.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
index 438ea45..c52a2c5 100644
--- a/drivers/media/v4l2-core/v4l2-mem2mem.c
+++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
@@ -230,12 +230,15 @@ static void v4l2_m2m_try_schedule(struct v4l2_m2m_ctx *m2m_ctx)
dprintk("No input buffers available\n");
return;
}
+ spin_lock_irqsave(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags);
if (list_empty(&m2m_ctx->cap_q_ctx.rdy_queue)) {
+ spin_unlock_irqrestore(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags);
spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, flags);
spin_unlock_irqrestore(&m2m_dev->job_spinlock, flags_job);
dprintk("No output buffers available\n");
return;
}
+ spin_unlock_irqrestore(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags);
spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, flags);
if (m2m_dev->m2m_ops->job_ready
--
1.8.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/3] [media]: v4l2-mem2mem: drop rdy_queue on STREAMOFF
2013-02-07 0:03 [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock John Sheu
@ 2013-02-07 0:03 ` John Sheu
2013-02-28 15:45 ` Pawel Osciak
2013-02-07 0:03 ` [PATCH 3/3] dma-buf: restore args on failure of dma_buf_mmap John Sheu
2013-02-28 15:44 ` [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock Pawel Osciak
2 siblings, 1 reply; 8+ messages in thread
From: John Sheu @ 2013-02-07 0:03 UTC (permalink / raw)
To: linux-media; +Cc: John Sheu, John Sheu
From: John Sheu <sheu@chromium.org>
When a v4l2-mem2mem context gets a STREAMOFF call on either its CAPTURE
or OUTPUT queues, we should:
* Drop the corresponding rdy_queue, since a subsequent STREAMON expects
an empty queue.
* Deschedule the context, as it now has at least one empty queue and
cannot run.
Signed-off-by: John Sheu <sheu@google.com>
---
drivers/media/v4l2-core/v4l2-mem2mem.c | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
index c52a2c5..c5c9d24 100644
--- a/drivers/media/v4l2-core/v4l2-mem2mem.c
+++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
@@ -408,10 +408,35 @@ EXPORT_SYMBOL_GPL(v4l2_m2m_streamon);
int v4l2_m2m_streamoff(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
enum v4l2_buf_type type)
{
- struct vb2_queue *vq;
+ struct v4l2_m2m_dev *m2m_dev;
+ struct v4l2_m2m_queue_ctx *q_ctx;
+ unsigned long flags_job, flags;
+ int ret;
- vq = v4l2_m2m_get_vq(m2m_ctx, type);
- return vb2_streamoff(vq, type);
+ q_ctx = get_queue_ctx(m2m_ctx, type);
+ ret = vb2_streamoff(&q_ctx->q, type);
+ if (ret)
+ return ret;
+
+ m2m_dev = m2m_ctx->m2m_dev;
+ spin_lock_irqsave(&m2m_dev->job_spinlock, flags_job);
+ /* We should not be scheduled anymore, since we're dropping a queue. */
+ INIT_LIST_HEAD(&m2m_ctx->queue);
+ m2m_ctx->job_flags = 0;
+
+ spin_lock_irqsave(&q_ctx->rdy_spinlock, flags);
+ /* Drop queue, since streamoff returns device to the same state as after
+ * calling reqbufs. */
+ INIT_LIST_HEAD(&q_ctx->rdy_queue);
+ spin_unlock_irqrestore(&q_ctx->rdy_spinlock, flags);
+
+ if (m2m_dev->curr_ctx == m2m_ctx) {
+ m2m_dev->curr_ctx = NULL;
+ wake_up(&m2m_ctx->finished);
+ }
+ spin_unlock_irqrestore(&m2m_dev->job_spinlock, flags_job);
+
+ return 0;
}
EXPORT_SYMBOL_GPL(v4l2_m2m_streamoff);
--
1.8.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/3] dma-buf: restore args on failure of dma_buf_mmap
2013-02-07 0:03 [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock John Sheu
2013-02-07 0:03 ` [PATCH 2/3] [media]: v4l2-mem2mem: drop rdy_queue on STREAMOFF John Sheu
@ 2013-02-07 0:03 ` John Sheu
2013-02-07 10:24 ` Sumit Semwal
2013-02-28 15:44 ` [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock Pawel Osciak
2 siblings, 1 reply; 8+ messages in thread
From: John Sheu @ 2013-02-07 0:03 UTC (permalink / raw)
To: linux-media; +Cc: John Sheu, John Sheu
From: John Sheu <sheu@chromium.org>
Callers to dma_buf_mmap expect to fput() the vma struct's vm_file
themselves on failure. Not restoring the struct's data on failure
causes a double-decrement of the vm_file's refcount.
Signed-off-by: John Sheu <sheu@google.com>
---
drivers/base/dma-buf.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c
index a3f79c4..01daf9c 100644
--- a/drivers/base/dma-buf.c
+++ b/drivers/base/dma-buf.c
@@ -446,6 +446,9 @@ EXPORT_SYMBOL_GPL(dma_buf_kunmap);
int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
unsigned long pgoff)
{
+ struct file *oldfile;
+ int ret;
+
if (WARN_ON(!dmabuf || !vma))
return -EINVAL;
@@ -459,14 +462,21 @@ int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
return -EINVAL;
/* readjust the vma */
- if (vma->vm_file)
- fput(vma->vm_file);
-
+ oldfile = vma->vm_file;
vma->vm_file = get_file(dmabuf->file);
vma->vm_pgoff = pgoff;
- return dmabuf->ops->mmap(dmabuf, vma);
+ ret = dmabuf->ops->mmap(dmabuf, vma);
+ if (ret) {
+ /* restore old parameters on failure */
+ vma->vm_file = oldfile;
+ fput(dmabuf->file);
+ } else {
+ if (oldfile)
+ fput(oldfile);
+ }
+ return ret;
}
EXPORT_SYMBOL_GPL(dma_buf_mmap);
--
1.8.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] dma-buf: restore args on failure of dma_buf_mmap
2013-02-07 0:03 ` [PATCH 3/3] dma-buf: restore args on failure of dma_buf_mmap John Sheu
@ 2013-02-07 10:24 ` Sumit Semwal
2013-03-18 23:49 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 8+ messages in thread
From: Sumit Semwal @ 2013-02-07 10:24 UTC (permalink / raw)
To: John Sheu; +Cc: linux-media, John Sheu
Hi John,
On Thursday 07 February 2013 05:33 AM, John Sheu wrote:
> From: John Sheu <sheu@chromium.org>
>
> Callers to dma_buf_mmap expect to fput() the vma struct's vm_file
> themselves on failure. Not restoring the struct's data on failure
> causes a double-decrement of the vm_file's refcount.
Thanks for your patch; could you please re-send it to the correct,
relevant lists and me (as the maintainer of dma-buf) rather than just to
linux-media ml?
I just chanced to see this patch, otherwise it could easily have slipped
past me (and other interested parties).
You could run scripts/get_maintainer.pl on your patch to find out the
right lists / email IDs to CC.
Thanks and best regards,
~Sumit.
>
> Signed-off-by: John Sheu <sheu@google.com>
> ---
> drivers/base/dma-buf.c | 18 ++++++++++++++----
> 1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c
> index a3f79c4..01daf9c 100644
> --- a/drivers/base/dma-buf.c
> +++ b/drivers/base/dma-buf.c
> @@ -446,6 +446,9 @@ EXPORT_SYMBOL_GPL(dma_buf_kunmap);
> int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
> unsigned long pgoff)
> {
> + struct file *oldfile;
> + int ret;
> +
> if (WARN_ON(!dmabuf || !vma))
> return -EINVAL;
>
> @@ -459,14 +462,21 @@ int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
> return -EINVAL;
>
> /* readjust the vma */
> - if (vma->vm_file)
> - fput(vma->vm_file);
> -
> + oldfile = vma->vm_file;
> vma->vm_file = get_file(dmabuf->file);
>
> vma->vm_pgoff = pgoff;
>
> - return dmabuf->ops->mmap(dmabuf, vma);
> + ret = dmabuf->ops->mmap(dmabuf, vma);
> + if (ret) {
> + /* restore old parameters on failure */
> + vma->vm_file = oldfile;
> + fput(dmabuf->file);
> + } else {
> + if (oldfile)
> + fput(oldfile);
> + }
> + return ret;
> }
> EXPORT_SYMBOL_GPL(dma_buf_mmap);
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock
2013-02-07 0:03 [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock John Sheu
2013-02-07 0:03 ` [PATCH 2/3] [media]: v4l2-mem2mem: drop rdy_queue on STREAMOFF John Sheu
2013-02-07 0:03 ` [PATCH 3/3] dma-buf: restore args on failure of dma_buf_mmap John Sheu
@ 2013-02-28 15:44 ` Pawel Osciak
2 siblings, 0 replies; 8+ messages in thread
From: Pawel Osciak @ 2013-02-28 15:44 UTC (permalink / raw)
To: John Sheu; +Cc: LMML, John Sheu
On Wed, Feb 6, 2013 at 4:03 PM, John Sheu <sheu@google.com> wrote:
> From: John Sheu <sheu@chromium.org>
>
> In v4l2_m2m_try_schedule(), use the CAPTURE queue lock when accessing
> the CAPTURE queue, instead of relying on just holding the OUTPUT queue
> lock.
>
> Signed-off-by: John Sheu <sheu@google.com>
Acked-by: Pawel Osciak <pawel@osciak.com>
> ---
> drivers/media/v4l2-core/v4l2-mem2mem.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
> index 438ea45..c52a2c5 100644
> --- a/drivers/media/v4l2-core/v4l2-mem2mem.c
> +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
> @@ -230,12 +230,15 @@ static void v4l2_m2m_try_schedule(struct v4l2_m2m_ctx *m2m_ctx)
> dprintk("No input buffers available\n");
> return;
> }
> + spin_lock_irqsave(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags);
> if (list_empty(&m2m_ctx->cap_q_ctx.rdy_queue)) {
> + spin_unlock_irqrestore(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags);
> spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, flags);
> spin_unlock_irqrestore(&m2m_dev->job_spinlock, flags_job);
> dprintk("No output buffers available\n");
> return;
> }
> + spin_unlock_irqrestore(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags);
> spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, flags);
>
> if (m2m_dev->m2m_ops->job_ready
> --
> 1.8.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Best regards,
Pawel Osciak
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] [media]: v4l2-mem2mem: drop rdy_queue on STREAMOFF
2013-02-07 0:03 ` [PATCH 2/3] [media]: v4l2-mem2mem: drop rdy_queue on STREAMOFF John Sheu
@ 2013-02-28 15:45 ` Pawel Osciak
0 siblings, 0 replies; 8+ messages in thread
From: Pawel Osciak @ 2013-02-28 15:45 UTC (permalink / raw)
To: John Sheu; +Cc: LMML, John Sheu
On Wed, Feb 6, 2013 at 4:03 PM, John Sheu <sheu@google.com> wrote:
> From: John Sheu <sheu@chromium.org>
>
> When a v4l2-mem2mem context gets a STREAMOFF call on either its CAPTURE
> or OUTPUT queues, we should:
> * Drop the corresponding rdy_queue, since a subsequent STREAMON expects
> an empty queue.
> * Deschedule the context, as it now has at least one empty queue and
> cannot run.
>
> Signed-off-by: John Sheu <sheu@google.com>
Acked-by: Pawel Osciak <pawel@osciak.com>
> ---
> drivers/media/v4l2-core/v4l2-mem2mem.c | 31 ++++++++++++++++++++++++++++---
> 1 file changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
> index c52a2c5..c5c9d24 100644
> --- a/drivers/media/v4l2-core/v4l2-mem2mem.c
> +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
> @@ -408,10 +408,35 @@ EXPORT_SYMBOL_GPL(v4l2_m2m_streamon);
> int v4l2_m2m_streamoff(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
> enum v4l2_buf_type type)
> {
> - struct vb2_queue *vq;
> + struct v4l2_m2m_dev *m2m_dev;
> + struct v4l2_m2m_queue_ctx *q_ctx;
> + unsigned long flags_job, flags;
> + int ret;
>
> - vq = v4l2_m2m_get_vq(m2m_ctx, type);
> - return vb2_streamoff(vq, type);
> + q_ctx = get_queue_ctx(m2m_ctx, type);
> + ret = vb2_streamoff(&q_ctx->q, type);
> + if (ret)
> + return ret;
> +
> + m2m_dev = m2m_ctx->m2m_dev;
> + spin_lock_irqsave(&m2m_dev->job_spinlock, flags_job);
> + /* We should not be scheduled anymore, since we're dropping a queue. */
> + INIT_LIST_HEAD(&m2m_ctx->queue);
> + m2m_ctx->job_flags = 0;
> +
> + spin_lock_irqsave(&q_ctx->rdy_spinlock, flags);
> + /* Drop queue, since streamoff returns device to the same state as after
> + * calling reqbufs. */
> + INIT_LIST_HEAD(&q_ctx->rdy_queue);
> + spin_unlock_irqrestore(&q_ctx->rdy_spinlock, flags);
> +
> + if (m2m_dev->curr_ctx == m2m_ctx) {
> + m2m_dev->curr_ctx = NULL;
> + wake_up(&m2m_ctx->finished);
> + }
> + spin_unlock_irqrestore(&m2m_dev->job_spinlock, flags_job);
> +
> + return 0;
> }
> EXPORT_SYMBOL_GPL(v4l2_m2m_streamoff);
>
> --
> 1.8.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Best regards,
Pawel Osciak
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] dma-buf: restore args on failure of dma_buf_mmap
2013-02-07 10:24 ` Sumit Semwal
@ 2013-03-18 23:49 ` Mauro Carvalho Chehab
2013-03-25 11:24 ` Sumit Semwal
0 siblings, 1 reply; 8+ messages in thread
From: Mauro Carvalho Chehab @ 2013-03-18 23:49 UTC (permalink / raw)
To: Sumit Semwal; +Cc: John Sheu, linux-media, John Sheu
Em Thu, 07 Feb 2013 15:54:52 +0530
Sumit Semwal <sumit.semwal@linaro.org> escreveu:
> Hi John,
>
> On Thursday 07 February 2013 05:33 AM, John Sheu wrote:
> > From: John Sheu <sheu@chromium.org>
> >
> > Callers to dma_buf_mmap expect to fput() the vma struct's vm_file
> > themselves on failure. Not restoring the struct's data on failure
> > causes a double-decrement of the vm_file's refcount.
> Thanks for your patch; could you please re-send it to the correct,
> relevant lists and me (as the maintainer of dma-buf) rather than just to
> linux-media ml?
Yes, it doesn't make sense to apply this one via the media tree ;)
I'm applying patches 1 and 2, as they should go through the media tree.
Thanks!
Mauro
>
> I just chanced to see this patch, otherwise it could easily have slipped
> past me (and other interested parties).
>
> You could run scripts/get_maintainer.pl on your patch to find out the
> right lists / email IDs to CC.
>
> Thanks and best regards,
> ~Sumit.
> >
> > Signed-off-by: John Sheu <sheu@google.com>
> > ---
> > drivers/base/dma-buf.c | 18 ++++++++++++++----
> > 1 file changed, 14 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c
> > index a3f79c4..01daf9c 100644
> > --- a/drivers/base/dma-buf.c
> > +++ b/drivers/base/dma-buf.c
> > @@ -446,6 +446,9 @@ EXPORT_SYMBOL_GPL(dma_buf_kunmap);
> > int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
> > unsigned long pgoff)
> > {
> > + struct file *oldfile;
> > + int ret;
> > +
> > if (WARN_ON(!dmabuf || !vma))
> > return -EINVAL;
> >
> > @@ -459,14 +462,21 @@ int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
> > return -EINVAL;
> >
> > /* readjust the vma */
> > - if (vma->vm_file)
> > - fput(vma->vm_file);
> > -
> > + oldfile = vma->vm_file;
> > vma->vm_file = get_file(dmabuf->file);
> >
> > vma->vm_pgoff = pgoff;
> >
> > - return dmabuf->ops->mmap(dmabuf, vma);
> > + ret = dmabuf->ops->mmap(dmabuf, vma);
> > + if (ret) {
> > + /* restore old parameters on failure */
> > + vma->vm_file = oldfile;
> > + fput(dmabuf->file);
> > + } else {
> > + if (oldfile)
> > + fput(oldfile);
> > + }
> > + return ret;
> > }
> > EXPORT_SYMBOL_GPL(dma_buf_mmap);
> >
> >
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Cheers,
Mauro
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] dma-buf: restore args on failure of dma_buf_mmap
2013-03-18 23:49 ` Mauro Carvalho Chehab
@ 2013-03-25 11:24 ` Sumit Semwal
0 siblings, 0 replies; 8+ messages in thread
From: Sumit Semwal @ 2013-03-25 11:24 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: John Sheu, linux-media, John Sheu
On 19 March 2013 05:19, Mauro Carvalho Chehab <mchehab@redhat.com> wrote:
> Em Thu, 07 Feb 2013 15:54:52 +0530
> Sumit Semwal <sumit.semwal@linaro.org> escreveu:
>
>> Hi John,
>>
>> On Thursday 07 February 2013 05:33 AM, John Sheu wrote:
>> > From: John Sheu <sheu@chromium.org>
>> >
>> > Callers to dma_buf_mmap expect to fput() the vma struct's vm_file
>> > themselves on failure. Not restoring the struct's data on failure
>> > causes a double-decrement of the vm_file's refcount.
>> Thanks for your patch; could you please re-send it to the correct,
>> relevant lists and me (as the maintainer of dma-buf) rather than just to
>> linux-media ml?
>
> Yes, it doesn't make sense to apply this one via the media tree ;)
>
> I'm applying patches 1 and 2, as they should go through the media tree.
Sure, this patch is already in mainline as of 3.9-rc1 :)
>
> Thanks!
> Mauro
>>
>> I just chanced to see this patch, otherwise it could easily have slipped
>> past me (and other interested parties).
>>
>> You could run scripts/get_maintainer.pl on your patch to find out the
>> right lists / email IDs to CC.
>>
>> Thanks and best regards,
>> ~Sumit.
>> >
>> > Signed-off-by: John Sheu <sheu@google.com>
>> > ---
>> > drivers/base/dma-buf.c | 18 ++++++++++++++----
>> > 1 file changed, 14 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c
>> > index a3f79c4..01daf9c 100644
>> > --- a/drivers/base/dma-buf.c
>> > +++ b/drivers/base/dma-buf.c
>> > @@ -446,6 +446,9 @@ EXPORT_SYMBOL_GPL(dma_buf_kunmap);
>> > int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
>> > unsigned long pgoff)
>> > {
>> > + struct file *oldfile;
>> > + int ret;
>> > +
>> > if (WARN_ON(!dmabuf || !vma))
>> > return -EINVAL;
>> >
>> > @@ -459,14 +462,21 @@ int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
>> > return -EINVAL;
>> >
>> > /* readjust the vma */
>> > - if (vma->vm_file)
>> > - fput(vma->vm_file);
>> > -
>> > + oldfile = vma->vm_file;
>> > vma->vm_file = get_file(dmabuf->file);
>> >
>> > vma->vm_pgoff = pgoff;
>> >
>> > - return dmabuf->ops->mmap(dmabuf, vma);
>> > + ret = dmabuf->ops->mmap(dmabuf, vma);
>> > + if (ret) {
>> > + /* restore old parameters on failure */
>> > + vma->vm_file = oldfile;
>> > + fput(dmabuf->file);
>> > + } else {
>> > + if (oldfile)
>> > + fput(oldfile);
>> > + }
>> > + return ret;
>> > }
>> > EXPORT_SYMBOL_GPL(dma_buf_mmap);
>> >
>> >
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
> --
>
> Cheers,
> Mauro
--
Thanks and regards,
Sumit Semwal
Linaro Kernel Engineer - Graphics working group
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-03-25 11:25 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-07 0:03 [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock John Sheu
2013-02-07 0:03 ` [PATCH 2/3] [media]: v4l2-mem2mem: drop rdy_queue on STREAMOFF John Sheu
2013-02-28 15:45 ` Pawel Osciak
2013-02-07 0:03 ` [PATCH 3/3] dma-buf: restore args on failure of dma_buf_mmap John Sheu
2013-02-07 10:24 ` Sumit Semwal
2013-03-18 23:49 ` Mauro Carvalho Chehab
2013-03-25 11:24 ` Sumit Semwal
2013-02-28 15:44 ` [PATCH 1/3] [media] v4l2-mem2mem: use CAPTURE queue lock Pawel Osciak
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.