[bug report] regulator: s2mps11: add S2MPG10 regulator

From: Dan Carpenter

Date: Mon Feb 09 2026 - 04:45:47 EST


[ 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