android_kernel_samsung_sm8650/drivers/media/i2c
Linus Torvalds a2b8a41cc9 media: m5mols: fix off-by-one loop termination error
[ Upstream commit efbcbb12ee99f750c9f25c873b55ad774871de2a ]

The __find_restype() function loops over the m5mols_default_ffmt[]
array, and the termination condition ends up being wrong: instead of
stopping when the iterator becomes the size of the array it traverses,
it stops after it has already overshot the array.

Now, in practice this doesn't likely matter, because the code will
always find the entry it looks for, and will thus return early and never
hit that last extra iteration.

But it turns out that clang will unroll the loop fully, because it has
only two iterations (well, three due to the off-by-one bug), and then
clang will end up just giving up in the middle of the loop unrolling
when it notices that the code walks past the end of the array.

And that made 'objtool' very unhappy indeed, because the generated code
just falls off the edge of the universe, and ends up falling through to
the next function, causing this warning:

   drivers/media/i2c/m5mols/m5mols.o: warning: objtool: m5mols_set_fmt() falls through to next function m5mols_get_frame_desc()

Fix the loop ending condition.

Reported-by: Jens Axboe <axboe@kernel.dk>
Analyzed-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Analyzed-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://lore.kernel.org/linux-block/CAHk-=wgTSdKYbmB1JYM5vmHMcD9J9UZr0mn7BOYM_LudrP+Xvw@mail.gmail.com/
Fixes: bc125106f8 ("[media] Add support for M-5MOLS 8 Mega Pixel camera ISP")
Cc: HeungJun, Kim <riverful.kim@samsung.com>
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-03-22 13:33:53 +01:00
..
adv748x media: adv748x: afe: Select input port when initializing AFE 2022-12-31 13:32:03 +01:00
ccs i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
cx25840 media updates for v6.1-rc1 2022-10-07 11:04:35 -07:00
et8ek8 i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
m5mols media: m5mols: fix off-by-one loop termination error 2023-03-22 13:33:53 +01:00
s5c73m3 i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ad5820.c media: i2c: ad5820: Fix error path 2022-12-31 13:32:04 +01:00
ad9389b.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adp1653.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adv7170.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adv7175.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adv7180.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adv7183_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
adv7183.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adv7343_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
adv7343.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adv7393_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
adv7393.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adv7511-v4l2.c media updates for v6.1-rc1 2022-10-07 11:04:35 -07:00
adv7604.c media updates for v6.1-rc1 2022-10-07 11:04:35 -07:00
adv7842.c media updates for v6.1-rc1 2022-10-07 11:04:35 -07:00
ak881x.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ak7375.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
aptina-pll.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
aptina-pll.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
ar0521.c media fixes for v6.1-rc2 2022-10-22 15:30:15 -07:00
bt819.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
bt856.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
bt866.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ccs-pll.c Linux 5.11-rc6 2021-02-01 10:03:45 +01:00
ccs-pll.h media: ccs-pll: Switch from standard integer types to kernel ones 2021-01-12 17:55:28 +01:00
cs53l32a.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
cs3308.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
cs5345.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
dw9714.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
dw9768.c dw9768: Enable low-power probe on ACPI 2022-12-31 13:32:05 +01:00
dw9807-vcm.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
hi556.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
hi846.c media: i2c: hi846: Fix memory leak in hi846_parse_dt() 2022-12-31 13:32:04 +01:00
hi847.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx208.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx214.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx219.c media: i2c: imx219: Fix binning for RAW8 capture 2023-03-10 09:33:42 +01:00
imx258.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx274.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx290.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx319.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx334.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx335.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx355.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imx412.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ir-kbd-i2c.c media fixes for v6.1-rc2 2022-10-22 15:30:15 -07:00
isl7998x.c media fixes for v6.1-rc2 2022-10-22 15:30:15 -07:00
Kconfig media: ar0521: fix Kconfig: VIDEO_V4L2 -> VIDEO_DEV 2022-07-15 15:20:16 +01:00
ks0127.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ks0127.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
lm3560.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
lm3646.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
m52790.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
Makefile media: On Semi AR0521 sensor driver 2022-07-08 16:03:20 +01:00
max2175.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
max2175.h media: i2c: Use the correct style for SPDX License Identifier 2019-11-10 17:47:14 +01:00
max9271.c media: i2c: max9271: Introduce wake_up() function 2021-06-17 11:30:21 +02:00
max9271.h media: i2c: max9271: Introduce wake_up() function 2021-06-17 11:30:21 +02:00
max9286.c media: max9286: Fix memleak in max9286_v4l2_register() 2023-03-10 09:33:41 +01:00
ml86v7667.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
msp3400-driver.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
msp3400-driver.h media: msp3400: declare its own pads 2018-09-17 13:16:19 -04:00
msp3400-kthreads.c media: msp3400: use semicolons rather than commas to separate statements 2020-11-16 10:31:07 +01:00
mt9m001.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
mt9m032.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
mt9m111.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
mt9p031.c media: mt9p031: Drop bogus v4l2_subdev_get_try_crop() call from mt9p031_init_cfg() 2022-12-31 13:32:16 +01:00
mt9t001.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
mt9t112.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
mt9v011.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
mt9v032.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
mt9v111.c media fixes for v6.1-rc2 2022-10-22 15:30:15 -07:00
noon010pc30.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
og01a1b.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov02a10.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov08d10.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov13b10.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov772x.c media: i2c: ov772x: Fix memleak in ov772x_probe() 2023-03-10 09:33:42 +01:00
ov2640.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov2659.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov2680.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov2685.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov2740.c media: ov2740: Fix memleak in ov2740_init_controls() 2023-03-10 09:33:41 +01:00
ov5640.c media: ov5640: Fix analogue gain control 2023-03-17 08:50:32 +01:00
ov5645.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov5647.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov5648.c media: i2c: ov5648: Free V4L2 fwnode data on unbind 2022-12-31 13:32:04 +01:00
ov5670.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov5675.c media: ov5675: Fix memleak in ov5675_init_controls() 2023-03-10 09:33:42 +01:00
ov5693.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov5695.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov6650.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov7251.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov7640.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov7670.c media: i2c: ov7670: 0 instead of -EINVAL was returned 2023-03-10 09:33:44 +01:00
ov7740.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov8856.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov8865.c media fixes for v6.1-rc2 2022-10-22 15:30:15 -07:00
ov9282.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov9640.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov9640.h media: ov9640: Use the generic clock framework 2021-02-06 09:38:05 +01:00
ov9650.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov9734.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ov13858.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rdacm20.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rdacm21.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rj54n1cb0c.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
s5k4ecgx.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
s5k5baf.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
s5k6a3.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
s5k6aa.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
saa711x_regs.h media: i2c: Use the correct style for SPDX License Identifier 2019-11-10 17:47:14 +01:00
saa717x.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
saa6588.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
saa6752hs.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
saa7110.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
saa7115.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
saa7127.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
saa7185.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
sony-btf-mpx.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
sr030pc30.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
st-mipid02.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tc358743_regs.h media: i2c: add SPDX license info 2018-02-14 13:16:31 -05:00
tc358743.c media updates for v6.1-rc1 2022-10-07 11:04:35 -07:00
tda1997x_regs.h media: TDA1997x: replace video detection routine 2021-10-19 08:08:38 +01:00
tda1997x.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tda7432.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tda9840.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tea6415c.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tea6415c.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
tea6420.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tea6420.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ths7303.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ths8200_regs.h
ths8200.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tlv320aic23b.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tvaudio.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tvp514x_regs.h media: media/i2c: fix kerneldoc issues for media i2c headers 2021-03-22 10:23:43 +01:00
tvp514x.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tvp5150_reg.h media: i2c: Use the correct style for SPDX License Identifier 2019-11-10 17:47:14 +01:00
tvp5150.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tvp7002_reg.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
tvp7002.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tw2804.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tw9903.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tw9906.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tw9910.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
uda1342.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
upd64031a.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
upd64083.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
video-i2c.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
vp27smpx.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
vpx3220.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
vs6624_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
vs6624.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
wm8739.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
wm8775.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00