On Fri, Apr 05, 2024 at 11:26:25PM +0300, Jani Nikula wrote: > Prefer common check_add_overflow() from overflow.h over the locally > rolled versions of it. While check_add_overflow() does require a > variable to assign to, unlike add_overflows_t(), it's still better than > having multiple versions around. > > Cc: Kees Cook <keescook@xxxxxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_fb.c | 6 +++--- > drivers/gpu/drm/i915/i915_utils.h | 14 -------------- > 2 files changed, 3 insertions(+), 17 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c > index 3ea6470d6d92..86b443433e8b 100644 > --- a/drivers/gpu/drm/i915/display/intel_fb.c > +++ b/drivers/gpu/drm/i915/display/intel_fb.c > @@ -1106,7 +1106,7 @@ static int intel_fb_offset_to_xy(int *x, int *y, > { > struct drm_i915_private *i915 = to_i915(fb->dev); > unsigned int height; > - u32 alignment; > + u32 alignment, unused; > > if (DISPLAY_VER(i915) >= 12 && > !intel_fb_needs_pot_stride_remap(to_intel_framebuffer(fb)) && > @@ -1128,8 +1128,8 @@ static int intel_fb_offset_to_xy(int *x, int *y, > height = ALIGN(height, intel_tile_height(fb, color_plane)); > > /* Catch potential overflows early */ > - if (add_overflows_t(u32, mul_u32_u32(height, fb->pitches[color_plane]), > - fb->offsets[color_plane])) { > + if (check_add_overflow(mul_u32_u32(height, fb->pitches[color_plane]), > + fb->offsets[color_plane], &unused)) { > drm_dbg_kms(&i915->drm, > "Bad offset 0x%08x or pitch %d for color plane %d\n", > fb->offsets[color_plane], fb->pitches[color_plane], > diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h > index b45ef0560611..06ec6ceb61d5 100644 > --- a/drivers/gpu/drm/i915/i915_utils.h > +++ b/drivers/gpu/drm/i915/i915_utils.h > @@ -73,20 +73,6 @@ bool i915_error_injected(void); > __i915_printk(i915, i915_error_injected() ? KERN_DEBUG : KERN_ERR, \ > fmt, ##__VA_ARGS__) > > -#if defined(GCC_VERSION) && GCC_VERSION >= 70000 > -#define add_overflows_t(T, A, B) \ > - __builtin_add_overflow_p((A), (B), (T)0) > -#else > -#define add_overflows_t(T, A, B) ({ \ > - typeof(A) a = (A); \ > - typeof(B) b = (B); \ > - (T)(a + b) < a; \ > -}) > -#endif > - > -#define add_overflows(A, B) \ > - add_overflows_t(typeof((A) + (B)), (A), (B)) > - > #define range_overflows(start, size, max) ({ \ > typeof(start) start__ = (start); \ > typeof(size) size__ = (size); \ > -- > 2.39.2 >