Hi Arnout, 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 | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/media/video/videobuf-dma-sg.c b/drivers/media/video/videobuf-dma-sg.c > index da1790e..3b6f1b8 100644 > --- a/drivers/media/video/videobuf-dma-sg.c > +++ b/drivers/media/video/videobuf-dma-sg.c > @@ -244,7 +244,7 @@ int videobuf_dma_map(struct videobuf_queue* q, struct videobuf_dmabuf *dma) > } > if (!dma->bus_addr) { > dma->sglen = dma_map_sg(q->dev, dma->sglist, > - dma->nr_pages, dma->direction); > + dma->sglen, dma->direction); > if (0 == dma->sglen) { > printk(KERN_WARNING > "%s: videobuf_map_sg failed\n",__func__); Where is dma->sglen actually set? videobuf_dma_map() is used in __videobuf_iolock (drivers/media/video/videobuf-dma-sg.c) but neither videobuf_dma_init_kernel() nor videobuf_dma_init_user() seem to set it. This apparently leaves the value uninitialised. I definitely think it should be assigned somewhere. :-) -- 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