Commit b2aa8ac6 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Hans Verkuil
Browse files

media: common: saa7146: Avoid a leak in vmalloc_to_sg()



Commit in Fixes turned a BUG() into a "normal" memory allocation failure.
While at it, it introduced a memory leak.
So fix it.

Also update the comment on top of the function to reflect what has been
change by the commit in Fixes.

Fixes: 40e986c9 ("media: common: saa7146: replace BUG_ON by WARN_ON")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent 4a357000
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -133,8 +133,8 @@ int saa7146_wait_for_debi_done(struct saa7146_dev *dev, int nobusyloop)
 ****************************************************************************/

/* this is videobuf_vmalloc_to_sg() from videobuf-dma-sg.c
   make sure virt has been allocated with vmalloc_32(), otherwise the BUG()
   may be triggered on highmem machines */
   make sure virt has been allocated with vmalloc_32(), otherwise return NULL
   on highmem machines */
static struct scatterlist* vmalloc_to_sg(unsigned char *virt, int nr_pages)
{
	struct scatterlist *sglist;
@@ -150,7 +150,7 @@ static struct scatterlist* vmalloc_to_sg(unsigned char *virt, int nr_pages)
		if (NULL == pg)
			goto err;
		if (WARN_ON(PageHighMem(pg)))
			return NULL;
			goto err;
		sg_set_page(&sglist[i], pg, PAGE_SIZE, 0);
	}
	return sglist;