]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/media/v4l2-core/videobuf-dma-sg.c
treewide: Use array_size() in vmalloc()
[linux.git] / drivers / media / v4l2-core / videobuf-dma-sg.c
index add2edb23eac452e4f86f69e6de1ba696687c722..314abde9a9223b42912a556fd2028ff4557988f0 100644 (file)
@@ -6,11 +6,11 @@
  * into PAGE_SIZE chunks).  They also assume the driver does not need
  * to touch the video data.
  *
- * (c) 2007 Mauro Carvalho Chehab, <mchehab@infradead.org>
+ * (c) 2007 Mauro Carvalho Chehab, <mchehab@kernel.org>
  *
  * Highly based on video-buf written originally by:
  * (c) 2001,02 Gerd Knorr <kraxel@bytesex.org>
- * (c) 2006 Mauro Carvalho Chehab, <mchehab@infradead.org>
+ * (c) 2006 Mauro Carvalho Chehab, <mchehab@kernel.org>
  * (c) 2006 Ted Walther and John Sokol
  *
  * This program is free software; you can redistribute it and/or modify
@@ -48,7 +48,7 @@ static int debug;
 module_param(debug, int, 0644);
 
 MODULE_DESCRIPTION("helper module to manage video4linux dma sg buffers");
-MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
+MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@kernel.org>");
 MODULE_LICENSE("GPL");
 
 #define dprintk(level, fmt, arg...)                                    \
@@ -100,7 +100,7 @@ static struct scatterlist *videobuf_pages_to_sg(struct page **pages,
 
        if (NULL == pages[0])
                return NULL;
-       sglist = vmalloc(nr_pages * sizeof(*sglist));
+       sglist = vmalloc(array_size(nr_pages, sizeof(*sglist)));
        if (NULL == sglist)
                return NULL;
        sg_init_table(sglist, nr_pages);
@@ -175,7 +175,8 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma,
        dma->offset = data & ~PAGE_MASK;
        dma->size = size;
        dma->nr_pages = last-first+1;
-       dma->pages = kmalloc(dma->nr_pages * sizeof(struct page *), GFP_KERNEL);
+       dma->pages = kmalloc_array(dma->nr_pages, sizeof(struct page *),
+                                  GFP_KERNEL);
        if (NULL == dma->pages)
                return -ENOMEM;
 
@@ -334,7 +335,7 @@ int videobuf_dma_unmap(struct device *dev, struct videobuf_dmabuf *dma)
        if (!dma->sglen)
                return 0;
 
-       dma_unmap_sg(dev, dma->sglist, dma->sglen, dma->direction);
+       dma_unmap_sg(dev, dma->sglist, dma->nr_pages, dma->direction);
 
        vfree(dma->sglist);
        dma->sglist = NULL;
@@ -434,7 +435,7 @@ static void videobuf_vm_close(struct vm_area_struct *vma)
  * now ...).  Bounce buffers don't work very well for the data rates
  * video capture has.
  */
-static int videobuf_vm_fault(struct vm_fault *vmf)
+static vm_fault_t videobuf_vm_fault(struct vm_fault *vmf)
 {
        struct vm_area_struct *vma = vmf->vma;
        struct page *page;
@@ -581,7 +582,7 @@ static int __videobuf_sync(struct videobuf_queue *q,
        MAGIC_CHECK(mem->dma.magic, MAGIC_DMABUF);
 
        dma_sync_sg_for_cpu(q->dev, mem->dma.sglist,
-                           mem->dma.sglen, mem->dma.direction);
+                           mem->dma.nr_pages, mem->dma.direction);
 
        return 0;
 }