[{"id":38391,"web_url":"https://patchwork.libcamera.org/comment/38391/","msgid":"<177435703330.3380983.8784133476297272394@ping.linuxembedded.co.uk>","date":"2026-03-24T12:57:13","subject":"Re: [PATCH v1 2/2] libcamera: v4l2_device: 0 is not a generic error\n\tindex","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2026-03-24 12:32:14)\n> As per the kernel documentation:\n> \n>   If the error is associated with a particular control, then ``error_idx``\n>   is set to the index of that control. If the error is not related to a\n>   specific control, or the validation step failed , then ``error_idx`` is\n>   set to ``count``.\n> \n> Thus a value of 0 means that the first control could not be processed\n> properly. So fix the conditions.\n> \n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n>  src/libcamera/v4l2_device.cpp | 4 ++--\n>  1 file changed, 2 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> index 53bd7865a..67bbaa037 100644\n> --- a/src/libcamera/v4l2_device.cpp\n> +++ b/src/libcamera/v4l2_device.cpp\n> @@ -260,7 +260,7 @@ ControlList V4L2Device::getControls(Span<const uint32_t> ids, const V4L2Request\n>                 unsigned int errorIdx = v4l2ExtCtrls.error_idx;\n>  \n>                 /* Generic validation error. */\n> -               if (errorIdx == 0 || errorIdx >= v4l2Ctrls.size()) {\n> +               if (errorIdx >= v4l2Ctrls.size()) {\n>                         LOG(V4L2, Error) << \"Unable to read controls: \"\n>                                          << strerror(-ret);\n\nShould we at least print the control name/identifier that failed here?\n\n>                         return {};\n> @@ -405,7 +405,7 @@ int V4L2Device::setControls(ControlList *ctrls, const V4L2Request *request)\n>                 unsigned int errorIdx = v4l2ExtCtrls.error_idx;\n>  \n>                 /* Generic validation error. */\n> -               if (errorIdx == 0 || errorIdx >= v4l2Ctrls.size()) {\n> +               if (errorIdx >= v4l2Ctrls.size()) {\n>                         LOG(V4L2, Error) << \"Unable to set controls: \"\n>                                          << strerror(-ret);\n>                         return -EINVAL;\n> -- \n> 2.53.0\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 40F81BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 24 Mar 2026 12:57:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 03F2B62784;\n\tTue, 24 Mar 2026 13:57:20 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C5E2362780\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Mar 2026 13:57:17 +0100 (CET)","from monstersaurus.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 5B5DB802;\n\tTue, 24 Mar 2026 13:55:59 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Fqg0c4xh\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1774356959;\n\tbh=bozqY66vDITw9wodA8Udf8dGq78TphybGu3KMVWPwdU=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=Fqg0c4xhXK5FO0CeqaIZKpFEHBGD6t6Njmo/6bPAkknsiQBq68YAMoYvGPpACJIaZ\n\tVH0IkW8r0OROVi/tyhPXwUhFpKBlCNCikJu0YUGUSQQ1+r2JrKF6cduebbmTV0UTAM\n\t3uIkEKZ3fsW+K5oxm+htVuJgbxwwEjqbqmjJLieE=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260324123214.1762198-2-barnabas.pocze@ideasonboard.com>","References":"<20260324123214.1762198-1-barnabas.pocze@ideasonboard.com>\n\t<20260324123214.1762198-2-barnabas.pocze@ideasonboard.com>","Subject":"Re: [PATCH v1 2/2] libcamera: v4l2_device: 0 is not a generic error\n\tindex","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 24 Mar 2026 12:57:13 +0000","Message-ID":"<177435703330.3380983.8784133476297272394@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":38392,"web_url":"https://patchwork.libcamera.org/comment/38392/","msgid":"<332b78ad-e06e-4689-ae8f-b5ff14d0a11c@ideasonboard.com>","date":"2026-03-24T12:59:56","subject":"Re: [PATCH v1 2/2] libcamera: v4l2_device: 0 is not a generic error\n\tindex","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 03. 24. 13:57 keltezéssel, Kieran Bingham írta:\n> Quoting Barnabás Pőcze (2026-03-24 12:32:14)\n>> As per the kernel documentation:\n>>\n>>    If the error is associated with a particular control, then ``error_idx``\n>>    is set to the index of that control. If the error is not related to a\n>>    specific control, or the validation step failed , then ``error_idx`` is\n>>    set to ``count``.\n>>\n>> Thus a value of 0 means that the first control could not be processed\n>> properly. So fix the conditions.\n>>\n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> ---\n>>   src/libcamera/v4l2_device.cpp | 4 ++--\n>>   1 file changed, 2 insertions(+), 2 deletions(-)\n>>\n>> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n>> index 53bd7865a..67bbaa037 100644\n>> --- a/src/libcamera/v4l2_device.cpp\n>> +++ b/src/libcamera/v4l2_device.cpp\n>> @@ -260,7 +260,7 @@ ControlList V4L2Device::getControls(Span<const uint32_t> ids, const V4L2Request\n>>                  unsigned int errorIdx = v4l2ExtCtrls.error_idx;\n>>   \n>>                  /* Generic validation error. */\n>> -               if (errorIdx == 0 || errorIdx >= v4l2Ctrls.size()) {\n>> +               if (errorIdx >= v4l2Ctrls.size()) {\n>>                          LOG(V4L2, Error) << \"Unable to read controls: \"\n>>                                           << strerror(-ret);\n> \n> Should we at least print the control name/identifier that failed here?\n\nIt is printed below that condition, both in `{get,set}Controls()`.\n\n\n> \n>>                          return {};\n>> @@ -405,7 +405,7 @@ int V4L2Device::setControls(ControlList *ctrls, const V4L2Request *request)\n>>                  unsigned int errorIdx = v4l2ExtCtrls.error_idx;\n>>   \n>>                  /* Generic validation error. */\n>> -               if (errorIdx == 0 || errorIdx >= v4l2Ctrls.size()) {\n>> +               if (errorIdx >= v4l2Ctrls.size()) {\n>>                          LOG(V4L2, Error) << \"Unable to set controls: \"\n>>                                           << strerror(-ret);\n>>                          return -EINVAL;\n>> -- \n>> 2.53.0\n>>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id A9835BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 24 Mar 2026 13:00:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 47ADE62784;\n\tTue, 24 Mar 2026 14:00:01 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F23BD62780\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Mar 2026 13:59:59 +0100 (CET)","from [192.168.33.36] (185.221.143.129.nat.pool.zt.hu\n\t[185.221.143.129])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CF6D0802;\n\tTue, 24 Mar 2026 13:58:42 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"EMWDFYJx\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1774357122;\n\tbh=vWLHZx4Sd0KUrsWCpDaBT1gfCPbcId2b1MD8vwkaS9s=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=EMWDFYJxyBdLsLonj5OKCwmHQnmC/n1lCyHWxJ6x4Ukeyi4WCW0XNNe5686P3z38O\n\tTyq0sayM1Jc0MDtaeWJdH2du/G6uz9bxEfh50DGcyYUPpquoYvRY8C9K5+pL1hxHih\n\tJxSlTxTYxwbCfeKYUq1zWdotGYrxVutlNMlQhhTU=","Message-ID":"<332b78ad-e06e-4689-ae8f-b5ff14d0a11c@ideasonboard.com>","Date":"Tue, 24 Mar 2026 13:59:56 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v1 2/2] libcamera: v4l2_device: 0 is not a generic error\n\tindex","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260324123214.1762198-1-barnabas.pocze@ideasonboard.com>\n\t<20260324123214.1762198-2-barnabas.pocze@ideasonboard.com>\n\t<177435703330.3380983.8784133476297272394@ping.linuxembedded.co.uk>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<177435703330.3380983.8784133476297272394@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":38393,"web_url":"https://patchwork.libcamera.org/comment/38393/","msgid":"<177435801717.3380983.7997621750873903797@ping.linuxembedded.co.uk>","date":"2026-03-24T13:13:37","subject":"Re: [PATCH v1 2/2] libcamera: v4l2_device: 0 is not a generic error\n\tindex","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2026-03-24 12:59:56)\n> 2026. 03. 24. 13:57 keltezéssel, Kieran Bingham írta:\n> > Quoting Barnabás Pőcze (2026-03-24 12:32:14)\n> >> As per the kernel documentation:\n> >>\n> >>    If the error is associated with a particular control, then ``error_idx``\n> >>    is set to the index of that control. If the error is not related to a\n> >>    specific control, or the validation step failed , then ``error_idx`` is\n> >>    set to ``count``.\n> >>\n> >> Thus a value of 0 means that the first control could not be processed\n> >> properly. So fix the conditions.\n> >>\n> >> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> >> ---\n> >>   src/libcamera/v4l2_device.cpp | 4 ++--\n> >>   1 file changed, 2 insertions(+), 2 deletions(-)\n> >>\n> >> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> >> index 53bd7865a..67bbaa037 100644\n> >> --- a/src/libcamera/v4l2_device.cpp\n> >> +++ b/src/libcamera/v4l2_device.cpp\n> >> @@ -260,7 +260,7 @@ ControlList V4L2Device::getControls(Span<const uint32_t> ids, const V4L2Request\n> >>                  unsigned int errorIdx = v4l2ExtCtrls.error_idx;\n> >>   \n> >>                  /* Generic validation error. */\n> >> -               if (errorIdx == 0 || errorIdx >= v4l2Ctrls.size()) {\n> >> +               if (errorIdx >= v4l2Ctrls.size()) {\n> >>                          LOG(V4L2, Error) << \"Unable to read controls: \"\n> >>                                           << strerror(-ret);\n> > \n> > Should we at least print the control name/identifier that failed here?\n> \n> It is printed below that condition, both in `{get,set}Controls()`.\n\nAha great, well then:\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> \n> \n> > \n> >>                          return {};\n> >> @@ -405,7 +405,7 @@ int V4L2Device::setControls(ControlList *ctrls, const V4L2Request *request)\n> >>                  unsigned int errorIdx = v4l2ExtCtrls.error_idx;\n> >>   \n> >>                  /* Generic validation error. */\n> >> -               if (errorIdx == 0 || errorIdx >= v4l2Ctrls.size()) {\n> >> +               if (errorIdx >= v4l2Ctrls.size()) {\n> >>                          LOG(V4L2, Error) << \"Unable to set controls: \"\n> >>                                           << strerror(-ret);\n> >>                          return -EINVAL;\n> >> -- \n> >> 2.53.0\n> >>\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id F20A7BE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 24 Mar 2026 13:13:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E35D662787;\n\tTue, 24 Mar 2026 14:13:41 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5665B62780\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Mar 2026 14:13:40 +0100 (CET)","from monstersaurus.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 117B3591;\n\tTue, 24 Mar 2026 14:12:23 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"j63prYFE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1774357943;\n\tbh=266pSJH65+J/NBViR1Bmzl/aoc342VtZ6YHwg9SRib8=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=j63prYFEMoiV5l2QqDaKypeX7p/ehPcyuQ6DHLlCespJh+14LkR53RoDlKMwd+0mj\n\tnscDi6YX8GRkzDIbdIOymcMRXEw3uL+5BpSuwY3g+M/9dbRqZMe3Q4a2PxZOUhLC+f\n\tb+cQ71AcVUQXfuD2cdWbPe0s68u2ZR8Y6/Y1m92k=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<332b78ad-e06e-4689-ae8f-b5ff14d0a11c@ideasonboard.com>","References":"<20260324123214.1762198-1-barnabas.pocze@ideasonboard.com>\n\t<20260324123214.1762198-2-barnabas.pocze@ideasonboard.com>\n\t<177435703330.3380983.8784133476297272394@ping.linuxembedded.co.uk>\n\t<332b78ad-e06e-4689-ae8f-b5ff14d0a11c@ideasonboard.com>","Subject":"Re: [PATCH v1 2/2] libcamera: v4l2_device: 0 is not a generic error\n\tindex","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 24 Mar 2026 13:13:37 +0000","Message-ID":"<177435801717.3380983.7997621750873903797@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]