On Sat, Oct 6, 2012 at 1:17 PM, Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx> wrote: > Em Thu, 6 Sep 2012 17:23:57 +0200 > Peter Senna Tschudin <peter.senna@xxxxxxxxx> escreveu: > >> From: Peter Senna Tschudin <peter.senna@xxxxxxxxx> >> >> Convert a nonnegative error return code to a negative one, as returned >> elsewhere in the function. >> >> A simplified version of the semantic match that finds this problem is as >> follows: (http://coccinelle.lip6.fr/) >> >> // <smpl> >> ( >> if@p1 (\(ret < 0\|ret != 0\)) >> { ... return ret; } >> | >> ret@p1 = 0 >> ) >> ... when != ret = e1 >> when != &ret >> *if(...) >> { >> ... when != ret = e2 >> when forall >> return ret; >> } >> >> // </smpl> >> >> Signed-off-by: Peter Senna Tschudin <peter.senna@xxxxxxxxx> >> >> --- >> drivers/media/v4l2-core/videobuf2-core.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c >> index 4da3df6..f6bc240 100644 >> --- a/drivers/media/v4l2-core/videobuf2-core.c >> +++ b/drivers/media/v4l2-core/videobuf2-core.c >> @@ -1876,8 +1876,10 @@ static int __vb2_init_fileio(struct vb2_queue *q, int read) >> */ >> for (i = 0; i < q->num_buffers; i++) { >> fileio->bufs[i].vaddr = vb2_plane_vaddr(q->bufs[i], 0); >> - if (fileio->bufs[i].vaddr == NULL) >> + if (fileio->bufs[i].vaddr == NULL) { >> + ret = -EFAULT; >> goto err_reqbufs; >> + } > > Had you test this patch? I suspect it breaks the driver, as there are failures under > streaming handling that are acceptable, as it may indicate that userspace was not > able to handle all queued frames in time. On such cases, what the Kernel does is to > just discard the frame. Userspace is able to detect it, by looking inside the timestamp > added on each frame. No, I have not tested it. This was the only place the function was returning non negative value for error path, so looked as a bug to me. May I add a comment about returning non-negative value is intended there? > >> fileio->bufs[i].size = vb2_plane_size(q->bufs[i], 0); >> } >> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-media" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > > Cheers, > Mauro -- Peter -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html