Re: [PATCH 15/20] drm/tegra/hub: Increase buffer size to ensure all possible values can be stored

From: Thierry Reding
Date: Thu Aug 24 2023 - 09:47:03 EST


On Thu, Aug 24, 2023 at 01:01:24PM +0100, Lee Jones wrote:
> On Thu, 24 Aug 2023, Jani Nikula wrote:
>
> > On Thu, 24 Aug 2023, Thierry Reding <thierry.reding@xxxxxxxxx> wrote:
> > > On Thu, Aug 24, 2023 at 08:37:00AM +0100, Lee Jones wrote:
> > >> When converting from int to string, we must allow for up to 10-chars (2147483647).
> > >>
> > >> Fixes the following W=1 kernel build warning(s):
> > >>
> > >> drivers/gpu/drm/tegra/hub.c: In function ‘tegra_display_hub_probe’:
> > >> drivers/gpu/drm/tegra/hub.c:1106:47: warning: ‘%u’ directive output may be truncated writing between 1 and 10 bytes into a region of size 4 [-Wformat-truncation=]
> > >> drivers/gpu/drm/tegra/hub.c:1106:42: note: directive argument in the range [0, 4294967294]
> > >> drivers/gpu/drm/tegra/hub.c:1106:17: note: ‘snprintf’ output between 6 and 15 bytes into a destination of size 8
> > >
> > > I wish there was (perhaps there is?) a better way to annotate that i
> > > will always be within a given range. In practice this is always going to
> > > be smaller than 10 and even in future hardware I wouldn't expect this to
> > > ever exceed anything like 32 or 64, so 8 characters is already generous.
> >
> > I assume you could do
> >
> > snprintf(id, sizeof(id), "wgrp%u", (unsigned char)i);
> >
> > but it's perhaps less obvious than just increasing the size of the
> > buffer.
>
> I had the very same thought process.

It's not a big deal, this happens all on the stack, so adding a couple
of bytes isn't going to hurt very much. Still with all the tooling that
we have it'd be nice if something could be added. Perhaps an alternative
would be to reject values for num_wgrp that are bigger than 32. With
that the compiler might have enough information not to warn about this.

Anyway, no need to spend any more time on this, I'm fine with the patch
as-is.

Thierry

Attachment: signature.asc
Description: PGP signature