Hi Arnout, Thanks for the patch. Arnout Vandecappelle wrote: > videobuf_pages_to_sg() and videobuf_vmalloc_to_sg() happen to create > a scatterlist element for every page. However, this is not true for > bus addresses, so other functions shouldn't rely on the length of the > scatter list being equal to nr_pages. > --- > drivers/media/video/videobuf-dma-sg.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/video/videobuf-dma-sg.c b/drivers/media/video/videobuf-dma-sg.c > index da1790e..18aaf54 100644 > --- a/drivers/media/video/videobuf-dma-sg.c > +++ b/drivers/media/video/videobuf-dma-sg.c > @@ -262,7 +262,7 @@ int videobuf_dma_sync(struct videobuf_queue *q, struct videobuf_dmabuf *dma) > MAGIC_CHECK(dma->magic, MAGIC_DMABUF); > BUG_ON(!dma->sglen); > > - dma_sync_sg_for_cpu(q->dev, dma->sglist, dma->nr_pages, dma->direction); > + dma_sync_sg_for_cpu(q->dev, dma->sglist, dma->sglen, dma->direction); > return 0; > } I think the same problem still exists --- dma->sglen is not initialised anywhere, is it? > @@ -272,7 +272,7 @@ int videobuf_dma_unmap(struct videobuf_queue* q,struct videobuf_dmabuf *dma) > if (!dma->sglen) > return 0; > > - dma_unmap_sg(q->dev, dma->sglist, dma->nr_pages, dma->direction); > + dma_unmap_sg(q->dev, dma->sglist, dma->sglen, dma->direction); > > kfree(dma->sglist); > dma->sglist = NULL; -- Sakari Ailus sakari.ailus@xxxxxxxxxxxxxxxxxxxxxxxxxx -- 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