Commit 1faa39e0 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: videobuf-dma-sg: number of pages should be unsigned long

As reported by smatch:

	drivers/media/v4l2-core/videobuf-dma-sg.c:245 videobuf_dma_init_kernel() warn: should 'nr_pages << 12' be a 64 bit type?

The printk should not be using %d for the number of pages.

After looking better, the real problem here is that the
number of pages should be long int.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 73c01654
...@@ -180,7 +180,7 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma, ...@@ -180,7 +180,7 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma,
if (rw == READ) if (rw == READ)
flags |= FOLL_WRITE; flags |= FOLL_WRITE;
dprintk(1, "init user [0x%lx+0x%lx => %d pages]\n", dprintk(1, "init user [0x%lx+0x%lx => %lu pages]\n",
data, size, dma->nr_pages); data, size, dma->nr_pages);
err = pin_user_pages(data & PAGE_MASK, dma->nr_pages, err = pin_user_pages(data & PAGE_MASK, dma->nr_pages,
...@@ -188,7 +188,7 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma, ...@@ -188,7 +188,7 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma,
if (err != dma->nr_pages) { if (err != dma->nr_pages) {
dma->nr_pages = (err >= 0) ? err : 0; dma->nr_pages = (err >= 0) ? err : 0;
dprintk(1, "pin_user_pages: err=%d [%d]\n", err, dprintk(1, "pin_user_pages: err=%d [%lu]\n", err,
dma->nr_pages); dma->nr_pages);
return err < 0 ? err : -EINVAL; return err < 0 ? err : -EINVAL;
} }
...@@ -208,11 +208,11 @@ static int videobuf_dma_init_user(struct videobuf_dmabuf *dma, int direction, ...@@ -208,11 +208,11 @@ static int videobuf_dma_init_user(struct videobuf_dmabuf *dma, int direction,
} }
static int videobuf_dma_init_kernel(struct videobuf_dmabuf *dma, int direction, static int videobuf_dma_init_kernel(struct videobuf_dmabuf *dma, int direction,
int nr_pages) unsigned long nr_pages)
{ {
int i; int i;
dprintk(1, "init kernel [%d pages]\n", nr_pages); dprintk(1, "init kernel [%lu pages]\n", nr_pages);
dma->direction = direction; dma->direction = direction;
dma->vaddr_pages = kcalloc(nr_pages, sizeof(*dma->vaddr_pages), dma->vaddr_pages = kcalloc(nr_pages, sizeof(*dma->vaddr_pages),
...@@ -238,11 +238,11 @@ static int videobuf_dma_init_kernel(struct videobuf_dmabuf *dma, int direction, ...@@ -238,11 +238,11 @@ static int videobuf_dma_init_kernel(struct videobuf_dmabuf *dma, int direction,
dma->vaddr = vmap(dma->vaddr_pages, nr_pages, VM_MAP | VM_IOREMAP, dma->vaddr = vmap(dma->vaddr_pages, nr_pages, VM_MAP | VM_IOREMAP,
PAGE_KERNEL); PAGE_KERNEL);
if (NULL == dma->vaddr) { if (NULL == dma->vaddr) {
dprintk(1, "vmalloc_32(%d pages) failed\n", nr_pages); dprintk(1, "vmalloc_32(%lu pages) failed\n", nr_pages);
goto out_free_pages; goto out_free_pages;
} }
dprintk(1, "vmalloc is at addr %p, size=%d\n", dprintk(1, "vmalloc is at addr %p, size=%lu\n",
dma->vaddr, nr_pages << PAGE_SHIFT); dma->vaddr, nr_pages << PAGE_SHIFT);
memset(dma->vaddr, 0, nr_pages << PAGE_SHIFT); memset(dma->vaddr, 0, nr_pages << PAGE_SHIFT);
...@@ -267,9 +267,9 @@ static int videobuf_dma_init_kernel(struct videobuf_dmabuf *dma, int direction, ...@@ -267,9 +267,9 @@ static int videobuf_dma_init_kernel(struct videobuf_dmabuf *dma, int direction,
} }
static int videobuf_dma_init_overlay(struct videobuf_dmabuf *dma, int direction, static int videobuf_dma_init_overlay(struct videobuf_dmabuf *dma, int direction,
dma_addr_t addr, int nr_pages) dma_addr_t addr, unsigned long nr_pages)
{ {
dprintk(1, "init overlay [%d pages @ bus 0x%lx]\n", dprintk(1, "init overlay [%lu pages @ bus 0x%lx]\n",
nr_pages, (unsigned long)addr); nr_pages, (unsigned long)addr);
dma->direction = direction; dma->direction = direction;
...@@ -500,9 +500,11 @@ static int __videobuf_iolock(struct videobuf_queue *q, ...@@ -500,9 +500,11 @@ static int __videobuf_iolock(struct videobuf_queue *q,
struct videobuf_buffer *vb, struct videobuf_buffer *vb,
struct v4l2_framebuffer *fbuf) struct v4l2_framebuffer *fbuf)
{ {
int err, pages;
dma_addr_t bus;
struct videobuf_dma_sg_memory *mem = vb->priv; struct videobuf_dma_sg_memory *mem = vb->priv;
unsigned long pages;
dma_addr_t bus;
int err;
BUG_ON(!mem); BUG_ON(!mem);
MAGIC_CHECK(mem->magic, MAGIC_SG_MEM); MAGIC_CHECK(mem->magic, MAGIC_SG_MEM);
......
...@@ -60,7 +60,7 @@ struct videobuf_dmabuf { ...@@ -60,7 +60,7 @@ struct videobuf_dmabuf {
/* common */ /* common */
struct scatterlist *sglist; struct scatterlist *sglist;
int sglen; int sglen;
int nr_pages; unsigned long nr_pages;
int direction; int direction;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment