On Sat, 8 Nov 2025 at 01:27, Tvrtko Ursulin <[email protected]> wrote: > > > On 07/11/2025 16:42, Ard Biesheuvel wrote: > > From: Ard Biesheuvel <[email protected]> > > > > GCC notices that the 16-byte uabi_name field could theoretically be too > > small for the formatted string if the instance number exceeds 100. > > > > Given that there are apparently ABI concerns here, this is the minimal > > fix that shuts up the compiler without changing the output or the > > maximum length for existing values < 100. > > What would be those ABI concerns? I don't immediately see any. > > drivers/gpu/drm/i915/intel_memory_region.c: In function > > ‘intel_memory_region_create’: > > drivers/gpu/drm/i915/intel_memory_region.c:273:61: error: ‘%u’ directive > > output may be truncated writing between 1 and 5 bytes into a region of size > > between 3 and 11 [-Werror=format-truncation=] > > 273 | snprintf(mem->uabi_name, sizeof(mem->uabi_name), "%s%u", > > | ^~ > > drivers/gpu/drm/i915/intel_memory_region.c:273:58: note: directive argument > > in the range [0, 65535] > > 273 | snprintf(mem->uabi_name, sizeof(mem->uabi_name), "%s%u", > > | ^~~~~~ > > drivers/gpu/drm/i915/intel_memory_region.c:273:9: note: ‘snprintf’ output > > between 7 and 19 bytes into a destination of size 16 > > 273 | snprintf(mem->uabi_name, sizeof(mem->uabi_name), "%s%u", > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > 274 | intel_memory_type_str(type), instance); > > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > Signed-off-by: Ard Biesheuvel <[email protected]> > > --- > > Cc: Jani Nikula <[email protected]> > > Cc: Joonas Lahtinen <[email protected]> > > Cc: Rodrigo Vivi <[email protected]> > > Cc: Tvrtko Ursulin <[email protected]> > > Cc: David Airlie <[email protected]> > > Cc: Simona Vetter <[email protected]> > > Cc: [email protected] > > Cc: [email protected] > > > > This is unlikely to be the right fix, but sending a wrong patch is > > usually a better way to elicit a response than just sending a bug > > report. > > > > drivers/gpu/drm/i915/intel_memory_region.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_memory_region.c > > b/drivers/gpu/drm/i915/intel_memory_region.c > > index 59bd603e6deb..ad4afcf0c58a 100644 > > --- a/drivers/gpu/drm/i915/intel_memory_region.c > > +++ b/drivers/gpu/drm/i915/intel_memory_region.c > > @@ -271,7 +271,7 @@ intel_memory_region_create(struct drm_i915_private > > *i915, > > mem->instance = instance; > > > > snprintf(mem->uabi_name, sizeof(mem->uabi_name), "%s%u", > > - intel_memory_type_str(type), instance); > > + intel_memory_type_str(type), instance % 100); > It's a theoretical issue only since there is no hardware with a double > digit number of instances. > > But I guess much prettier fix would be to simply grow the buffer. >
Whatever works for you - I don't really understand this code anyway. > Also, hm, how come gcc does not find the mem->name vsnprintf from > intel_memory_region_set_name? > The optimizer works in mysterious ways, I guess. I cannot explain why I am the only one seeing this in the first place, but the warning seems legit to me.
