drm/i915: use check_add_overflow() and drop local variants
authorJani Nikula <jani.nikula@intel.com>
Fri, 5 Apr 2024 20:26:25 +0000 (23:26 +0300)
committerJani Nikula <jani.nikula@intel.com>
Tue, 9 Apr 2024 08:49:32 +0000 (11:49 +0300)
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@chromium.org>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240405202625.2525671-1-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_fb.c
drivers/gpu/drm/i915/i915_utils.h

index 3ea6470d6d921d8c61b20cc354b5e355e2e3885b..86b443433e8b71201efb02ff03a21411e7520362 100644 (file)
@@ -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],
index b45ef0560611a8fc5653b6bb4237d12db806c55f..06ec6ceb61d579b1207d620852ed9710f7e4bafb 100644 (file)
@@ -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); \