All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.