[PATCH i-g-t] lib/igt_core: Use suffix for casting to long to avoid overflow
Zbigniew Kempczyński
zbigniew.kempczynski at intel.com
Wed Dec 18 05:53:20 UTC 2024
On Tue, Dec 17, 2024 at 05:47:44PM +0100, Kamil Konieczny wrote:
> Hi Zbigniew,
> On 2024-12-17 at 11:58:07 +0100, Zbigniew Kempczyński wrote:
>
> please improve subject, imho better something like:
>
> Avoid overflow in micro/nano-seconds calculations
> or
> Fix overflow in micro/nano-seconds calculations
>
> or propose yourself one line description.
>
> > Multiplication without using casting to long (long) for at least
> > one argument in expression may cause overflow especially when we're
> > using this for calculating timeouts in nanoseconds precision.
> >
> > Ensure we're picking valid ul/ull suffix for base definitions for
> > all dependents.
> >
> > Reported-by: Ilia Levi <ilia.levi at intel.com>
> > Closes: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/163
> >
>
> I agree here with Lucas, remove this empty line.
>
> > Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
> > Cc: Lucas De Marchi <lucas.demarchi at intel.com>
> > Cc: Ilia Levi <ilia.levi at intel.com>
> > ---
> > lib/igt_core.h | 10 ++++++++--
> > 1 file changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/lib/igt_core.h b/lib/igt_core.h
> > index 90f57402f0..1b6e70182b 100644
> > --- a/lib/igt_core.h
> > +++ b/lib/igt_core.h
> > @@ -1517,11 +1517,17 @@ void igt_kmsg(const char *format, ...);
> > #define le32_to_cpu(x) (x)
> > #endif
> >
> > -#define MSEC_PER_SEC (1000u)
> > +#if __WORDSIZE == 64
>
> I am not sure if this is defined on all platforms where igt
> is compiled, on musl and on non-Linux like FreeBSD,
> why not make #ifndef/#define/#endif for __WORDSIZE ?
I think it would be good to add this to build system, I base on
results on:
https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/1331414
We already rely on __WORDSIZE in other places in the code (PRIx64)
so I've assumed it's safe to use it here.
--
Zbigniew
>
> BTW is it just sizeof(1ul) == 8 ?
>
> With this fixed and subject improved
> Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
>
> Regards,
> Kamil
>
> > +#define MSEC_PER_SEC (1000ul)
> > +#define USEC_PER_MSEC (1000ul)
> > +#else
> > +#define MSEC_PER_SEC (1000ull)
> > +#define USEC_PER_MSEC (1000ull)
> > +#endif
> > +
> > #define USEC_PER_SEC (1000u * MSEC_PER_SEC)
> > #define USEC_PER_DECISEC (100u * MSEC_PER_SEC)
> > #define NSEC_PER_SEC (1000u * USEC_PER_SEC)
> > -#define USEC_PER_MSEC (1000u)
> > #define NSEC_PER_MSEC (1000u * USEC_PER_MSEC)
> >
> > #define for_if(expr__) if (!(expr__)) {} else
> > --
> > 2.34.1
> >
More information about the igt-dev
mailing list