* [linux-next:master 732/2307] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c:154 convert_custom_brightness() error: buffer overflow 'caps->luminance_data' 99 <= 127
@ 2026-07-02 0:01 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-02 0:01 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Alex Hung <alex.hung@amd.com>
CC: Alex Deucher <alexander.deucher@amd.com>
CC: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com>
CC: Chenyu Chen <chen-yu.chen@amd.com>
Hi Alex,
FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 4f441960e691d37c880d2cc004de06bb5b6bd5e4
commit: f5165625b8b27a46993e0c55b4468bd4e215f7c6 [732/2307] drm/amd/display: Extract backlight code to amdgpu_dm_backlight
:::::: branch date: 8 hours ago
:::::: commit date: 2 weeks ago
config: x86_64-randconfig-r072-20260701 (https://download.01.org/0day-ci/archive/20260702/202607020734.EHHCtE8Y-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9185-gbcc58b9c
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202607020734.EHHCtE8Y-lkp@intel.com/
New smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c:154 convert_custom_brightness() error: buffer overflow 'caps->luminance_data' 99 <= 127
Old smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c:158 convert_custom_brightness() error: buffer overflow 'caps->luminance_data' 99 <= 127
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c:173 convert_custom_brightness() error: buffer overflow 'caps->luminance_data' 99 <= 127
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c:174 convert_custom_brightness() error: buffer overflow 'caps->luminance_data' 99 <= 128
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c:175 convert_custom_brightness() error: buffer overflow 'caps->luminance_data' 99 <= 127
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c:176 convert_custom_brightness() error: buffer overflow 'caps->luminance_data' 99 <= 128
vim +154 drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c
f5165625b8b27a Alex Hung 2026-04-23 125
f5165625b8b27a Alex Hung 2026-04-23 126 static void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *caps,
f5165625b8b27a Alex Hung 2026-04-23 127 unsigned int min, unsigned int max,
f5165625b8b27a Alex Hung 2026-04-23 128 uint32_t *user_brightness)
f5165625b8b27a Alex Hung 2026-04-23 129 {
f5165625b8b27a Alex Hung 2026-04-23 130 u32 brightness = scale_input_to_fw(min, max, *user_brightness);
f5165625b8b27a Alex Hung 2026-04-23 131 u8 lower_signal, upper_signal, upper_lum, lower_lum, lum;
f5165625b8b27a Alex Hung 2026-04-23 132 int left, right;
f5165625b8b27a Alex Hung 2026-04-23 133
f5165625b8b27a Alex Hung 2026-04-23 134 if (amdgpu_dc_debug_mask & DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE)
f5165625b8b27a Alex Hung 2026-04-23 135 return;
f5165625b8b27a Alex Hung 2026-04-23 136
f5165625b8b27a Alex Hung 2026-04-23 137 if (!caps->data_points)
f5165625b8b27a Alex Hung 2026-04-23 138 return;
f5165625b8b27a Alex Hung 2026-04-23 139
f5165625b8b27a Alex Hung 2026-04-23 140 /*
f5165625b8b27a Alex Hung 2026-04-23 141 * Handle the case where brightness is below the first data point
f5165625b8b27a Alex Hung 2026-04-23 142 * Interpolate between (0,0) and (first_signal, first_lum)
f5165625b8b27a Alex Hung 2026-04-23 143 */
f5165625b8b27a Alex Hung 2026-04-23 144 if (brightness < caps->luminance_data[0].input_signal) {
f5165625b8b27a Alex Hung 2026-04-23 145 lum = DIV_ROUND_CLOSEST(caps->luminance_data[0].luminance * brightness,
f5165625b8b27a Alex Hung 2026-04-23 146 caps->luminance_data[0].input_signal);
f5165625b8b27a Alex Hung 2026-04-23 147 goto scale;
f5165625b8b27a Alex Hung 2026-04-23 148 }
f5165625b8b27a Alex Hung 2026-04-23 149
f5165625b8b27a Alex Hung 2026-04-23 150 left = 0;
f5165625b8b27a Alex Hung 2026-04-23 151 right = caps->data_points - 1;
f5165625b8b27a Alex Hung 2026-04-23 152 while (left <= right) {
f5165625b8b27a Alex Hung 2026-04-23 153 int mid = left + (right - left) / 2;
f5165625b8b27a Alex Hung 2026-04-23 @154 u8 signal = caps->luminance_data[mid].input_signal;
f5165625b8b27a Alex Hung 2026-04-23 155
f5165625b8b27a Alex Hung 2026-04-23 156 /* Exact match found */
f5165625b8b27a Alex Hung 2026-04-23 157 if (signal == brightness) {
f5165625b8b27a Alex Hung 2026-04-23 158 lum = caps->luminance_data[mid].luminance;
f5165625b8b27a Alex Hung 2026-04-23 159 goto scale;
f5165625b8b27a Alex Hung 2026-04-23 160 }
f5165625b8b27a Alex Hung 2026-04-23 161
f5165625b8b27a Alex Hung 2026-04-23 162 if (signal < brightness)
f5165625b8b27a Alex Hung 2026-04-23 163 left = mid + 1;
f5165625b8b27a Alex Hung 2026-04-23 164 else
f5165625b8b27a Alex Hung 2026-04-23 165 right = mid - 1;
f5165625b8b27a Alex Hung 2026-04-23 166 }
f5165625b8b27a Alex Hung 2026-04-23 167
f5165625b8b27a Alex Hung 2026-04-23 168 /* verify bound */
f5165625b8b27a Alex Hung 2026-04-23 169 if (left >= caps->data_points)
f5165625b8b27a Alex Hung 2026-04-23 170 left = caps->data_points - 1;
f5165625b8b27a Alex Hung 2026-04-23 171
f5165625b8b27a Alex Hung 2026-04-23 172 /* At this point, left > right */
f5165625b8b27a Alex Hung 2026-04-23 173 lower_signal = caps->luminance_data[right].input_signal;
f5165625b8b27a Alex Hung 2026-04-23 174 upper_signal = caps->luminance_data[left].input_signal;
f5165625b8b27a Alex Hung 2026-04-23 175 lower_lum = caps->luminance_data[right].luminance;
f5165625b8b27a Alex Hung 2026-04-23 176 upper_lum = caps->luminance_data[left].luminance;
f5165625b8b27a Alex Hung 2026-04-23 177
f5165625b8b27a Alex Hung 2026-04-23 178 /* interpolate */
f5165625b8b27a Alex Hung 2026-04-23 179 if (right == left || !lower_lum)
f5165625b8b27a Alex Hung 2026-04-23 180 lum = upper_lum;
f5165625b8b27a Alex Hung 2026-04-23 181 else
f5165625b8b27a Alex Hung 2026-04-23 182 lum = lower_lum + DIV_ROUND_CLOSEST((upper_lum - lower_lum) *
f5165625b8b27a Alex Hung 2026-04-23 183 (brightness - lower_signal),
f5165625b8b27a Alex Hung 2026-04-23 184 upper_signal - lower_signal);
f5165625b8b27a Alex Hung 2026-04-23 185 scale:
f5165625b8b27a Alex Hung 2026-04-23 186 *user_brightness = scale_fw_to_input(min, max,
f5165625b8b27a Alex Hung 2026-04-23 187 DIV_ROUND_CLOSEST(lum * brightness, 101));
f5165625b8b27a Alex Hung 2026-04-23 188 }
f5165625b8b27a Alex Hung 2026-04-23 189
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-02 0:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-02 0:01 [linux-next:master 732/2307] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_backlight.c:154 convert_custom_brightness() error: buffer overflow 'caps->luminance_data' 99 <= 127 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.