* [bug report] regulator: s2mps11: add S2MPG10 regulator
[not found] <caa37f28-a2e8-4e0a-a9ce-a365ce805e4b@stanley.mountain>
@ 2026-02-09 9:45 ` Dan Carpenter
2026-02-09 14:07 ` André Draszik
0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2026-02-09 9:45 UTC (permalink / raw)
To: André Draszik; +Cc: André Draszik, linux-samsung-soc, linux-kernel
[ Smatch checking is paused while we raise funding. #SadFace
https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ]
Hello André Draszik,
Commit a2b8b9f33ce3 ("regulator: s2mps11: add S2MPG10 regulator")
from Jan 22, 2026 (linux-next), leads to the following Smatch static
checker warning:
drivers/regulator/s2mps11.c:483 s2mpg10_of_parse_cb()
warn: off by one 'ext_control' == ARRAY_SIZE()?
drivers/regulator/s2mps11.c
458 if (of_property_read_u32(np, "samsung,ext-control", &ext_control))
459 return 0;
460
461 switch (s2mps11->dev_type) {
462 case S2MPG10:
463 switch (desc->id) {
464 case S2MPG10_BUCK1 ... S2MPG10_BUCK7:
465 case S2MPG10_BUCK10:
466 case S2MPG10_LDO3 ... S2MPG10_LDO19:
467 if (ext_control > S2MPG10_EXTCTRL_TCXO_ON2)
468 return -EINVAL;
469 break;
470
471 case S2MPG10_LDO20:
472 if (ext_control < S2MPG10_EXTCTRL_LDO20M_EN2 ||
473 ext_control > S2MPG10_EXTCTRL_LDO20M_EN)
474 return -EINVAL;
475 break;
476
477 default:
478 return -EINVAL;
479 }
480
481 if (ext_control > ARRAY_SIZE(ext_control_s2mpg10))
This should be >= ARRAY_SIZE(). Although the earlier checks prevent an
out of bounds access, it's still worth fixing the sanity check.
482 return -EINVAL;
--> 483 ext_control = ext_control_s2mpg10[ext_control];
484 break;
485
486 case S2MPG11:
487 switch (desc->id) {
488 case S2MPG11_BUCK1 ... S2MPG11_BUCK3:
regards,
dan carpenter
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [bug report] regulator: s2mps11: add S2MPG10 regulator
2026-02-09 9:45 ` [bug report] regulator: s2mps11: add S2MPG10 regulator Dan Carpenter
@ 2026-02-09 14:07 ` André Draszik
0 siblings, 0 replies; 2+ messages in thread
From: André Draszik @ 2026-02-09 14:07 UTC (permalink / raw)
To: Dan Carpenter; +Cc: linux-samsung-soc, linux-kernel
Hi Dan,
On Mon, 2026-02-09 at 12:45 +0300, Dan Carpenter wrote:
> [ Smatch checking is paused while we raise funding. #SadFace
> https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ]
>
> Hello André Draszik,
>
> Commit a2b8b9f33ce3 ("regulator: s2mps11: add S2MPG10 regulator")
> from Jan 22, 2026 (linux-next), leads to the following Smatch static
> checker warning:
>
> drivers/regulator/s2mps11.c:483 s2mpg10_of_parse_cb()
> warn: off by one 'ext_control' == ARRAY_SIZE()?
>
> drivers/regulator/s2mps11.c
> 458 if (of_property_read_u32(np, "samsung,ext-control", &ext_control))
> 459 return 0;
> 460
> 461 switch (s2mps11->dev_type) {
> 462 case S2MPG10:
> 463 switch (desc->id) {
> 464 case S2MPG10_BUCK1 ... S2MPG10_BUCK7:
> 465 case S2MPG10_BUCK10:
> 466 case S2MPG10_LDO3 ... S2MPG10_LDO19:
> 467 if (ext_control > S2MPG10_EXTCTRL_TCXO_ON2)
> 468 return -EINVAL;
> 469 break;
> 470
> 471 case S2MPG10_LDO20:
> 472 if (ext_control < S2MPG10_EXTCTRL_LDO20M_EN2 ||
> 473 ext_control > S2MPG10_EXTCTRL_LDO20M_EN)
> 474 return -EINVAL;
> 475 break;
> 476
> 477 default:
> 478 return -EINVAL;
> 479 }
> 480
> 481 if (ext_control > ARRAY_SIZE(ext_control_s2mpg10))
>
> This should be >= ARRAY_SIZE(). Although the earlier checks prevent an
> out of bounds access, it's still worth fixing the sanity check.
Thanks, yes. Although this was on purpose to avoid duplicated checks. I'd say
this test could be removed altogether as it's just confusing and useless.
Cheers,
Andre'
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-02-09 14:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <caa37f28-a2e8-4e0a-a9ce-a365ce805e4b@stanley.mountain>
2026-02-09 9:45 ` [bug report] regulator: s2mps11: add S2MPG10 regulator Dan Carpenter
2026-02-09 14:07 ` André Draszik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox