This fixes the following compilation failure: "error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode"
Cc: stable@vger.kernel.org Fixes: 221cd51efe45 ("media: uvcvideo: Remove dangling pointers") Signed-off-by: Desnes Nunes desnesn@redhat.com --- drivers/media/usb/uvc/uvc_ctrl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 44b6513c5264..532615d8484b 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -3260,7 +3260,7 @@ int uvc_ctrl_init_device(struct uvc_device *dev) void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) { struct uvc_entity *entity; - int i; + unsigned int i;
guard(mutex)(&handle->chain->ctrl_mutex);
@@ -3268,7 +3268,7 @@ void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) return;
list_for_each_entry(entity, &handle->chain->dev->entities, list) { - for (unsigned int i = 0; i < entity->ncontrols; ++i) { + for (i = 0; i < entity->ncontrols; ++i) { if (entity->controls[i].handle != handle) continue; uvc_ctrl_set_handle(handle, &entity->controls[i], NULL);
Hi Desdes
How did you trigger this build warning? I believe we use C11
https://www.kernel.org/doc/html/latest/process/programming-language.html
Regards!
On Mon, 30 Jun 2025 at 17:07, Desnes Nunes desnesn@redhat.com wrote:
This fixes the following compilation failure: "error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode"
Cc: stable@vger.kernel.org Fixes: 221cd51efe45 ("media: uvcvideo: Remove dangling pointers") Signed-off-by: Desnes Nunes desnesn@redhat.com
drivers/media/usb/uvc/uvc_ctrl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 44b6513c5264..532615d8484b 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -3260,7 +3260,7 @@ int uvc_ctrl_init_device(struct uvc_device *dev) void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) { struct uvc_entity *entity;
int i;
unsigned int i; guard(mutex)(&handle->chain->ctrl_mutex);
@@ -3268,7 +3268,7 @@ void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) return;
list_for_each_entry(entity, &handle->chain->dev->entities, list) {
for (unsigned int i = 0; i < entity->ncontrols; ++i) {
for (i = 0; i < entity->ncontrols; ++i) { if (entity->controls[i].handle != handle) continue; uvc_ctrl_set_handle(handle, &entity->controls[i], NULL);
-- 2.49.0
On Mon, Jun 30, 2025 at 05:15:38PM +0200, Ricardo Ribalda wrote:
Hi Desdes
How did you trigger this build warning? I believe we use C11
https://www.kernel.org/doc/html/latest/process/programming-language.html
Note that the local declaration of the loop counter shadows the global one. I would have expected a different compiler warning though.
The shadowing was introduced by
commit 10acb9101355484c3e4f2625003cd1b6c203cfe4 Author: Ricardo Ribalda ribalda@chromium.org Date: Thu Mar 27 21:05:29 2025 +0000
media: uvcvideo: Increase/decrease the PM counter per IOCTL
and I think it should be fixed (while at it, with an unsigned int local loop counter instead of a signed int) as it's not a good practice.
On Mon, 30 Jun 2025 at 17:07, Desnes Nunes desnesn@redhat.com wrote:
This fixes the following compilation failure: "error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode"
Cc: stable@vger.kernel.org Fixes: 221cd51efe45 ("media: uvcvideo: Remove dangling pointers") Signed-off-by: Desnes Nunes desnesn@redhat.com
drivers/media/usb/uvc/uvc_ctrl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 44b6513c5264..532615d8484b 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -3260,7 +3260,7 @@ int uvc_ctrl_init_device(struct uvc_device *dev) void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) { struct uvc_entity *entity;
int i;
unsigned int i; guard(mutex)(&handle->chain->ctrl_mutex);
@@ -3268,7 +3268,7 @@ void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) return;
list_for_each_entry(entity, &handle->chain->dev->entities, list) {
for (unsigned int i = 0; i < entity->ncontrols; ++i) {
for (i = 0; i < entity->ncontrols; ++i) { if (entity->controls[i].handle != handle) continue; uvc_ctrl_set_handle(handle, &entity->controls[i], NULL);
Hello Laurent,
Yes, I did see that commit and will send a v2 to properly address the variable shadowing following C11 standards.
Thanks for the review Laurent,
On Mon, Jun 30, 2025 at 12:30 PM Laurent Pinchart laurent.pinchart@ideasonboard.com wrote:
On Mon, Jun 30, 2025 at 05:15:38PM +0200, Ricardo Ribalda wrote:
Hi Desdes
How did you trigger this build warning? I believe we use C11
https://www.kernel.org/doc/html/latest/process/programming-language.html
Note that the local declaration of the loop counter shadows the global one. I would have expected a different compiler warning though.
The shadowing was introduced by
commit 10acb9101355484c3e4f2625003cd1b6c203cfe4 Author: Ricardo Ribalda ribalda@chromium.org Date: Thu Mar 27 21:05:29 2025 +0000
media: uvcvideo: Increase/decrease the PM counter per IOCTL
and I think it should be fixed (while at it, with an unsigned int local loop counter instead of a signed int) as it's not a good practice.
On Mon, 30 Jun 2025 at 17:07, Desnes Nunes desnesn@redhat.com wrote:
This fixes the following compilation failure: "error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode"
Cc: stable@vger.kernel.org Fixes: 221cd51efe45 ("media: uvcvideo: Remove dangling pointers") Signed-off-by: Desnes Nunes desnesn@redhat.com
drivers/media/usb/uvc/uvc_ctrl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 44b6513c5264..532615d8484b 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -3260,7 +3260,7 @@ int uvc_ctrl_init_device(struct uvc_device *dev) void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) { struct uvc_entity *entity;
int i;
unsigned int i; guard(mutex)(&handle->chain->ctrl_mutex);
@@ -3268,7 +3268,7 @@ void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) return;
list_for_each_entry(entity, &handle->chain->dev->entities, list) {
for (unsigned int i = 0; i < entity->ncontrols; ++i) {
for (i = 0; i < entity->ncontrols; ++i) { if (entity->controls[i].handle != handle) continue; uvc_ctrl_set_handle(handle, &entity->controls[i], NULL);
-- Regards,
Laurent Pinchart
Hello Ricardo,
I triggered this build error while working in an older codebase that uses C89 due to legacy support reasons. Indeed - will focus on submitting C11 compatible fixes even when working on older codebases.
Thanks for the review Ricardo,
On Mon, Jun 30, 2025 at 12:16 PM Ricardo Ribalda ribalda@chromium.org wrote:
Hi Desdes
How did you trigger this build warning? I believe we use C11
https://www.kernel.org/doc/html/latest/process/programming-language.html
Regards!
On Mon, 30 Jun 2025 at 17:07, Desnes Nunes desnesn@redhat.com wrote:
This fixes the following compilation failure: "error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode"
Cc: stable@vger.kernel.org Fixes: 221cd51efe45 ("media: uvcvideo: Remove dangling pointers") Signed-off-by: Desnes Nunes desnesn@redhat.com
drivers/media/usb/uvc/uvc_ctrl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 44b6513c5264..532615d8484b 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -3260,7 +3260,7 @@ int uvc_ctrl_init_device(struct uvc_device *dev) void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) { struct uvc_entity *entity;
int i;
unsigned int i; guard(mutex)(&handle->chain->ctrl_mutex);
@@ -3268,7 +3268,7 @@ void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) return;
list_for_each_entry(entity, &handle->chain->dev->entities, list) {
for (unsigned int i = 0; i < entity->ncontrols; ++i) {
for (i = 0; i < entity->ncontrols; ++i) { if (entity->controls[i].handle != handle) continue; uvc_ctrl_set_handle(handle, &entity->controls[i], NULL);
-- 2.49.0
-- Ricardo Ribalda
On Mon, Jun 30, 2025 at 12:01:06PM -0300, Desnes Nunes wrote:
This fixes the following compilation failure: "error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode"
Cc: stable@vger.kernel.org Fixes: 221cd51efe45 ("media: uvcvideo: Remove dangling pointers") Signed-off-by: Desnes Nunes desnesn@redhat.com
drivers/media/usb/uvc/uvc_ctrl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 44b6513c5264..532615d8484b 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -3260,7 +3260,7 @@ int uvc_ctrl_init_device(struct uvc_device *dev) void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) { struct uvc_entity *entity;
- int i;
- unsigned int i;
guard(mutex)(&handle->chain->ctrl_mutex);
If your compiler can handle this guard(mutex) line, then:
@@ -3268,7 +3268,7 @@ void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) return; list_for_each_entry(entity, &handle->chain->dev->entities, list) {
for (unsigned int i = 0; i < entity->ncontrols; ++i) {
It can also handle that line.
Are you sure you are using a sane compiler?
confused,
greg k-h
Hello Greg,
The compiler is sane, but I ran into this while backporting fixes to an old codebase that still uses C89 due to legacy support reasons. Furthermore, you're right; there is no guard() in my code base, thus I had to backport guard() with the old mutex lock/unlock calls used prior to guard(). Indeed - will focus on all of what has been said on the v2.
Thanks for the review Greg,
On Mon, Jun 30, 2025 at 12:42 PM Greg KH gregkh@linuxfoundation.org wrote:
On Mon, Jun 30, 2025 at 12:01:06PM -0300, Desnes Nunes wrote:
This fixes the following compilation failure: "error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode"
Cc: stable@vger.kernel.org Fixes: 221cd51efe45 ("media: uvcvideo: Remove dangling pointers") Signed-off-by: Desnes Nunes desnesn@redhat.com
drivers/media/usb/uvc/uvc_ctrl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 44b6513c5264..532615d8484b 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -3260,7 +3260,7 @@ int uvc_ctrl_init_device(struct uvc_device *dev) void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) { struct uvc_entity *entity;
int i;
unsigned int i; guard(mutex)(&handle->chain->ctrl_mutex);
If your compiler can handle this guard(mutex) line, then:
@@ -3268,7 +3268,7 @@ void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) return;
list_for_each_entry(entity, &handle->chain->dev->entities, list) {
for (unsigned int i = 0; i < entity->ncontrols; ++i) {
It can also handle that line.
Are you sure you are using a sane compiler?
confused,
greg k-h
linux-stable-mirror@lists.linaro.org