media: videobuf2: Fix IS_ERR checking in vb2_dc_put_userptr()
In order to avoid error pointers from frame_vector_pages(), we could use IS_ERR() to check the return value to fix this. This checking operation could make sure that vector contains pages. Signed-off-by: Ma Ke <make_ruc2021@163.com> Acked-by: Tomasz Figa <tfiga@chromium.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
2a76e7679b
commit
554df753a6
@ -542,13 +542,14 @@ static void vb2_dc_put_userptr(void *buf_priv)
|
||||
*/
|
||||
dma_unmap_sgtable(buf->dev, sgt, buf->dma_dir,
|
||||
DMA_ATTR_SKIP_CPU_SYNC);
|
||||
if (buf->dma_dir == DMA_FROM_DEVICE ||
|
||||
buf->dma_dir == DMA_BIDIRECTIONAL) {
|
||||
pages = frame_vector_pages(buf->vec);
|
||||
/* sgt should exist only if vector contains pages... */
|
||||
BUG_ON(IS_ERR(pages));
|
||||
if (buf->dma_dir == DMA_FROM_DEVICE ||
|
||||
buf->dma_dir == DMA_BIDIRECTIONAL)
|
||||
if (!WARN_ON_ONCE(IS_ERR(pages)))
|
||||
for (i = 0; i < frame_vector_count(buf->vec); i++)
|
||||
set_page_dirty_lock(pages[i]);
|
||||
}
|
||||
sg_free_table(sgt);
|
||||
kfree(sgt);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user