mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information.
@ 2023-03-07 16:45 David Binderman
  2023-03-08 23:22 ` Laurent Pinchart
  0 siblings, 1 reply; 6+ messages in thread
From: David Binderman @ 2023-03-07 16:45 UTC (permalink / raw)
  To: andrzej.hajda, neil.armstrong, rfoss, Laurent.pinchart, jonas,
	jernej.skrabec, airlied, daniel, dri-devel, linux-kernel

Hello there,

I just ran the static analyser "cppcheck" over the source code of linux-6.2-rc1. It said:

linux-6.3-rc1/drivers/gpu/drm/bridge/fsl-ldb.c:101:3: style: int result is returned as long value. If the return value is long to avoid loss of information, then you have loss of information. [truncLongCastReturn]

Source code is

static unsigned long fsl_ldb_link_frequency(struct fsl_ldb *fsl_ldb, int clock)
{
    if (fsl_ldb->lvds_dual_link)
        return clock * 3500;
    else
        return clock * 7000;
}

Depending on the range of the value of clock, maybe unsigned long literals, like 3500UL, should
have been used ?

Regards

David Binderman




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information.
  2023-03-07 16:45 drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information David Binderman
@ 2023-03-08 23:22 ` Laurent Pinchart
  2023-03-09  7:59   ` David Binderman
  0 siblings, 1 reply; 6+ messages in thread
From: Laurent Pinchart @ 2023-03-08 23:22 UTC (permalink / raw)
  To: David Binderman
  Cc: andrzej.hajda, neil.armstrong, rfoss, jonas, jernej.skrabec,
	airlied, daniel, dri-devel, linux-kernel

On Tue, Mar 07, 2023 at 04:45:24PM +0000, David Binderman wrote:
> Hello there,
> 
> I just ran the static analyser "cppcheck" over the source code of
> linux-6.2-rc1. It said:
> 
> linux-6.3-rc1/drivers/gpu/drm/bridge/fsl-ldb.c:101:3: style: int
> result is returned as long value. If the return value is long to avoid
> loss of information, then you have loss of information.
> [truncLongCastReturn]
> 
> Source code is
> 
> static unsigned long fsl_ldb_link_frequency(struct fsl_ldb *fsl_ldb, int clock)
> {
>     if (fsl_ldb->lvds_dual_link)
>         return clock * 3500;
>     else
>         return clock * 7000;
> }
> 
> Depending on the range of the value of clock, maybe unsigned long
> literals, like 3500UL, should have been used ?

We could, but I don't think it will make any difference in practice as
the maximum pixel clock frequency supported by the SoC is 80MHz (per
LVDS channel). That would result in a 560MHz frequency returned by this
function, well below the 31 bits limit.

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information.
  2023-03-08 23:22 ` Laurent Pinchart
@ 2023-03-09  7:59   ` David Binderman
  2023-03-09  9:26     ` Laurent Pinchart
  0 siblings, 1 reply; 6+ messages in thread
From: David Binderman @ 2023-03-09  7:59 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: andrzej.hajda, neil.armstrong, rfoss, jonas, jernej.skrabec,
	airlied, daniel, dri-devel, linux-kernel

Hello there Laurent,

>We could, but I don't think it will make any difference in practice as
>the maximum pixel clock frequency supported by the SoC is 80MHz (per
>LVDS channel). That would result in a 560MHz frequency returned by this
>function, well below the 31 bits limit.

Thanks for your explanation. I have a couple of suggestions for possible improvements:

1. Your explanatory text in a comment nearby. This helps all readers of the code.

2. Might the frequency go up to 300 MHz anytime soon ? The code will stop working then. 
In this case, I would suggest to put in a run time sanity check to make sure no 31 bit overflow. 

Just a couple of ideas for the code.

Regards

David Binderman

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information.
  2023-03-09  7:59   ` David Binderman
@ 2023-03-09  9:26     ` Laurent Pinchart
  2023-03-09  9:42       ` David Binderman
  0 siblings, 1 reply; 6+ messages in thread
From: Laurent Pinchart @ 2023-03-09  9:26 UTC (permalink / raw)
  To: David Binderman
  Cc: andrzej.hajda, neil.armstrong, rfoss, jonas, jernej.skrabec,
	airlied, daniel, dri-devel, linux-kernel

Hi David,

On Thu, Mar 09, 2023 at 07:59:34AM +0000, David Binderman wrote:
> Hello there Laurent,
> 
> >We could, but I don't think it will make any difference in practice as
> >the maximum pixel clock frequency supported by the SoC is 80MHz (per
> >LVDS channel). That would result in a 560MHz frequency returned by this
> >function, well below the 31 bits limit.
> 
> Thanks for your explanation. I have a couple of suggestions for possible improvements:
> 
> 1. Your explanatory text in a comment nearby. This helps all readers of the code.
> 
> 2. Might the frequency go up to 300 MHz anytime soon ? The code will stop working then. 
> In this case, I would suggest to put in a run time sanity check to make sure no 31 bit overflow. 

As it's a hardware limit of the SoC, I wouldn't expect so.

This being said, I think adding a UL suffix to the constants would be
better than a comment as it will please static checkers and serve as
documentation to humans. Would you be able to send a patch to fix this ?

> Just a couple of ideas for the code.

Thanks for taking the time to share those.

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information.
  2023-03-09  9:26     ` Laurent Pinchart
@ 2023-03-09  9:42       ` David Binderman
  2023-03-09 10:04         ` Laurent Pinchart
  0 siblings, 1 reply; 6+ messages in thread
From: David Binderman @ 2023-03-09  9:42 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: andrzej.hajda, neil.armstrong, rfoss, jonas, jernej.skrabec,
	airlied, daniel, dri-devel, linux-kernel

Hello there Laurent,

>Would you be able to send a patch to fix this ?

Sadly, no. My success rate with kernel patches is low enough to make it not worth trying.

Regards

David Binderman


From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Sent: 09 March 2023 09:26
To: David Binderman <dcb314@hotmail.com>
Cc: andrzej.hajda@intel.com <andrzej.hajda@intel.com>; neil.armstrong@linaro.org <neil.armstrong@linaro.org>; rfoss@kernel.org <rfoss@kernel.org>; jonas@kwiboo.se <jonas@kwiboo.se>; jernej.skrabec@gmail.com <jernej.skrabec@gmail.com>; airlied@gmail.com <airlied@gmail.com>; daniel@ffwll.ch <daniel@ffwll.ch>; dri-devel@lists.freedesktop.org <dri-devel@lists.freedesktop.org>; linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>
Subject: Re: drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information. 
 
Hi David,

On Thu, Mar 09, 2023 at 07:59:34AM +0000, David Binderman wrote:
> Hello there Laurent,
> 
> >We could, but I don't think it will make any difference in practice as
> >the maximum pixel clock frequency supported by the SoC is 80MHz (per
> >LVDS channel). That would result in a 560MHz frequency returned by this
> >function, well below the 31 bits limit.
> 
> Thanks for your explanation. I have a couple of suggestions for possible improvements:
> 
> 1. Your explanatory text in a comment nearby. This helps all readers of the code.
> 
> 2. Might the frequency go up to 300 MHz anytime soon ? The code will stop working then. 
> In this case, I would suggest to put in a run time sanity check to make sure no 31 bit overflow. 

As it's a hardware limit of the SoC, I wouldn't expect so.

This being said, I think adding a UL suffix to the constants would be
better than a comment as it will please static checkers and serve as
documentation to humans. Would you be able to send a patch to fix this ?

> Just a couple of ideas for the code.

Thanks for taking the time to share those.

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information.
  2023-03-09  9:42       ` David Binderman
@ 2023-03-09 10:04         ` Laurent Pinchart
  0 siblings, 0 replies; 6+ messages in thread
From: Laurent Pinchart @ 2023-03-09 10:04 UTC (permalink / raw)
  To: David Binderman
  Cc: andrzej.hajda, neil.armstrong, rfoss, jonas, jernej.skrabec,
	airlied, daniel, dri-devel, linux-kernel

Hi David,

On Thu, Mar 09, 2023 at 09:42:54AM +0000, David Binderman wrote:
> Hello there Laurent,
> 
> > Would you be able to send a patch to fix this ?
> 
> Sadly, no. My success rate with kernel patches is low enough to make
> it not worth trying.

I'm sorry to hear that. If you were willing to try again, I can offer
help with tooling and review to get your patch merged.

> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Sent: 09 March 2023 09:26
> To: David Binderman <dcb314@hotmail.com>
> Cc: andrzej.hajda@intel.com <andrzej.hajda@intel.com>; neil.armstrong@linaro.org <neil.armstrong@linaro.org>; rfoss@kernel.org <rfoss@kernel.org>; jonas@kwiboo.se <jonas@kwiboo.se>; jernej.skrabec@gmail.com <jernej.skrabec@gmail.com>; airlied@gmail.com <airlied@gmail.com>; daniel@ffwll.ch <daniel@ffwll.ch>; dri-devel@lists.freedesktop.org <dri-devel@lists.freedesktop.org>; linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>
> Subject: Re: drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information. 
>  
> Hi David,
> 
> On Thu, Mar 09, 2023 at 07:59:34AM +0000, David Binderman wrote:
> > Hello there Laurent,
> > 
> > > We could, but I don't think it will make any difference in practice as
> > > the maximum pixel clock frequency supported by the SoC is 80MHz (per
> > > LVDS channel). That would result in a 560MHz frequency returned by this
> > > function, well below the 31 bits limit.
> > 
> > Thanks for your explanation. I have a couple of suggestions for possible improvements:
> > 
> > 1. Your explanatory text in a comment nearby. This helps all readers of the code.
> > 
> > 2. Might the frequency go up to 300 MHz anytime soon ? The code will stop working then. 
> > In this case, I would suggest to put in a run time sanity check to make sure no 31 bit overflow. 
> 
> As it's a hardware limit of the SoC, I wouldn't expect so.
> 
> This being said, I think adding a UL suffix to the constants would be
> better than a comment as it will please static checkers and serve as
> documentation to humans. Would you be able to send a patch to fix this ?
> 
> > Just a couple of ideas for the code.
> 
> Thanks for taking the time to share those.

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-03-09 10:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-07 16:45 drivers/gpu/drm/bridge/fsl-ldb.c:101: possible loss of information David Binderman
2023-03-08 23:22 ` Laurent Pinchart
2023-03-09  7:59   ` David Binderman
2023-03-09  9:26     ` Laurent Pinchart
2023-03-09  9:42       ` David Binderman
2023-03-09 10:04         ` Laurent Pinchart

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®