On Thu 4 October 2012 11:29:57 Prabhakar wrote: > From: Lad, Prabhakar <prabhakar.lad@xxxxxx> > > from commit with id 896f38f582730a19eb49677105b4fe4c0270b82e > it's mandatory to check the return code of vb2_queue_init(). > > Signed-off-by: Lad, Prabhakar <prabhakar.lad@xxxxxx> > Signed-off-by: Manjunath Hadli <manjunath.hadli@xxxxxx> > Cc: Hans Verkuil <hans.verkuil@xxxxxxxxx> Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Regards, Hans > --- > Changes for v2: > 1: Added vb2_dma_contig_cleanup_ctx() on failure of > vb2_queue_init() to avoid memory leak, pointed by Hans. > > drivers/media/platform/davinci/vpif_capture.c | 9 +++++++-- > drivers/media/platform/davinci/vpif_display.c | 9 +++++++-- > 2 files changed, 14 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c > index 83b80ba..cabd5a2 100644 > --- a/drivers/media/platform/davinci/vpif_capture.c > +++ b/drivers/media/platform/davinci/vpif_capture.c > @@ -976,6 +976,7 @@ static int vpif_reqbufs(struct file *file, void *priv, > struct common_obj *common; > u8 index = 0; > struct vb2_queue *q; > + int ret; > > vpif_dbg(2, debug, "vpif_reqbufs\n"); > > @@ -1015,8 +1016,12 @@ static int vpif_reqbufs(struct file *file, void *priv, > q->mem_ops = &vb2_dma_contig_memops; > q->buf_struct_size = sizeof(struct vpif_cap_buffer); > > - vb2_queue_init(q); > - > + ret = vb2_queue_init(q); > + if (ret) { > + vpif_err("vpif_capture: vb2_queue_init() failed\n"); > + vb2_dma_contig_cleanup_ctx(common->alloc_ctx); > + return ret; > + } > /* Set io allowed member of file handle to TRUE */ > fh->io_allowed[index] = 1; > /* Increment io usrs member of channel object to 1 */ > diff --git a/drivers/media/platform/davinci/vpif_display.c b/drivers/media/platform/davinci/vpif_display.c > index ae8329d..7f20ca5 100644 > --- a/drivers/media/platform/davinci/vpif_display.c > +++ b/drivers/media/platform/davinci/vpif_display.c > @@ -936,6 +936,7 @@ static int vpif_reqbufs(struct file *file, void *priv, > enum v4l2_field field; > struct vb2_queue *q; > u8 index = 0; > + int ret; > > /* This file handle has not initialized the channel, > It is not allowed to do settings */ > @@ -981,8 +982,12 @@ static int vpif_reqbufs(struct file *file, void *priv, > q->mem_ops = &vb2_dma_contig_memops; > q->buf_struct_size = sizeof(struct vpif_disp_buffer); > > - vb2_queue_init(q); > - > + ret = vb2_queue_init(q); > + if (ret) { > + vpif_err("vpif_display: vb2_queue_init() failed\n"); > + vb2_dma_contig_cleanup_ctx(common->alloc_ctx); > + return ret; > + } > /* Set io allowed member of file handle to TRUE */ > fh->io_allowed[index] = 1; > /* Increment io usrs member of channel object to 1 */ > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html