public inbox for linux-samsung-soc@vger.kernel.org
 help / color / mirror / Atom feed
* [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