* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox