]> git.hungrycats.org Git - linux/commitdiff
media: gspca: ov534-ov772x: Fix off-by-one error in set_frame_rate()
authorJinjie Ruan <ruanjinjie@huawei.com>
Mon, 28 Oct 2024 08:02:56 +0000 (16:02 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Dec 2024 09:33:04 +0000 (10:33 +0100)
commit d2842dec577900031826dc44e9bf0c66416d7173 upstream.

In set_frame_rate(), select a rate in rate_0 or rate_1 by checking
sd->frame_rate >= r->fps in a loop, but the loop condition terminates when
the index reaches zero, which fails to check the last elememt in rate_0 or
rate_1.

Check for >= 0 so that the last one in rate_0 or rate_1 is also checked.

Fixes: 189d92af707e ("V4L/DVB (13422): gspca - ov534: ov772x changes from Richard Kaswy.")
Cc: stable@vger.kernel.org
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/usb/gspca/ov534.c

index 8b6a57f170d0dd0c54b5fc6fa1df3d2426923c31..bdff64a29a33a2d6fed3814bc0daf8ef8c005a9d 100644 (file)
@@ -847,7 +847,7 @@ static void set_frame_rate(struct gspca_dev *gspca_dev)
                r = rate_1;
                i = ARRAY_SIZE(rate_1);
        }
-       while (--i > 0) {
+       while (--i >= 0) {
                if (sd->frame_rate >= r->fps)
                        break;
                r++;