diff --git a/drivers/media/video_processor/ionvideo/ionvideo.c b/drivers/media/video_processor/ionvideo/ionvideo.c index 177ee619f..854ee3aef 100644 --- a/drivers/media/video_processor/ionvideo/ionvideo.c +++ b/drivers/media/video_processor/ionvideo/ionvideo.c @@ -482,7 +482,7 @@ static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type i) dprintk(dev, 2, "%s\n", __func__); /* shutdown control thread */ - if (dma_q->kthread) { + if (!IS_ERR(dma_q->kthread)) { kthread_stop(dma_q->kthread); dma_q->kthread = NULL; } @@ -752,6 +752,11 @@ static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *p) return 0; } +static int vidioc_mmap(struct file *file, struct vm_area_struct *vma) +{ + return 0; +} + static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *p) { struct ionvideo_dev *dev = video_drvdata(file); @@ -788,7 +793,7 @@ static const struct v4l2_file_operations ionvideo_v4l2_fops = { .read = vidioc_read, .poll = vidioc_poll, .unlocked_ioctl = video_ioctl2,/* V4L2 ioctl handler */ - .mmap = vb2_fop_mmap, + .mmap = vidioc_mmap, }; static const struct v4l2_ioctl_ops ionvideo_ioctl_ops = { diff --git a/drivers/media/video_processor/v4lvideo/v4lvideo.c b/drivers/media/video_processor/v4lvideo/v4lvideo.c index 0e846895b..b102740c2 100644 --- a/drivers/media/video_processor/v4lvideo/v4lvideo.c +++ b/drivers/media/video_processor/v4lvideo/v4lvideo.c @@ -1760,6 +1760,11 @@ static unsigned int v4lvideo_poll(struct file *file, } } +static int vidioc_mmap(struct file *file, struct vm_area_struct *vma) +{ + return 0; +} + static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *cap) @@ -1951,6 +1956,11 @@ static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *p) struct v4lvideo_file_s *v4lvideo_file; u32 inst_id = dev->inst; + if (p->index >= V4LVIDEO_POOL_SIZE) { + pr_err("ionvideo: dbuf: err index=%d\n", p->index); + return -EINVAL; + } + dev->v4lvideo_input[p->index] = *p; q_count[inst_id]++; @@ -2309,7 +2319,7 @@ static const struct v4l2_file_operations v4lvideo_v4l2_fops = { .read = vidioc_read, .poll = v4lvideo_poll, .unlocked_ioctl = video_ioctl2,/* V4L2 ioctl handler */ - .mmap = vb2_fop_mmap, + .mmap = vidioc_mmap, }; static const struct v4l2_ioctl_ops v4lvideo_ioctl_ops = { diff --git a/drivers/media/video_processor/video_dev/amlvideo2.c b/drivers/media/video_processor/video_dev/amlvideo2.c index 82a89bfe8..22f8613aa 100644 --- a/drivers/media/video_processor/video_dev/amlvideo2.c +++ b/drivers/media/video_processor/video_dev/amlvideo2.c @@ -5635,8 +5635,10 @@ static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type i) if (fh->type != V4L2_BUF_TYPE_VIDEO_CAPTURE || i != fh->type) return -EINVAL; ret = videobuf_streamoff(&fh->vb_vidq); - if (ret < 0) + if (ret < 0) { pr_err("videobuf stream off failed\n"); + return 0; + } if (amlvideo2_dbg_en) { pr_info("%s , %d\n", __func__, __LINE__); pr_info("start_vdin_flag = %d\n", node->start_vdin_flag);