[PATCH] drm/amdgpu: fix 64 bit divide in eeprom code

Luben Tuikov luben.tuikov at amd.com
Wed Jun 30 16:24:53 UTC 2021


Reviewed-by: Luben Tuikov <luben.tuikov at amd.com>

On 2021-06-30 11:25 a.m., Alex Deucher wrote:
> pos is 64 bits.
>
> Fixes: 5e98eafa90ca19 ("drm/amdgpu: RAS EEPROM table is now in debugfs")
> Cc: luben.tuikov at amd.com
> Reported-by: kernel test robot <lkp at intel.com>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
> index 677e379f5fb5..fc70620369e4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
> @@ -880,13 +880,17 @@ static ssize_t amdgpu_ras_debugfs_table_read(struct file *f, char __user *buf,
>  	if (*pos < data_len && size > 0) {
>  		u8 dare[RAS_TABLE_RECORD_SIZE];
>  		u8 data[rec_hdr_fmt_size + 1];
> +		struct eeprom_table_record record;
> +		int s, r;
> +
>  		/* Find the starting record index
>  		 */
> -		int s = (*pos - strlen(tbl_hdr_str) - tbl_hdr_fmt_size -
> -			 strlen(rec_hdr_str)) / rec_hdr_fmt_size;
> -		int r = (*pos - strlen(tbl_hdr_str) - tbl_hdr_fmt_size -
> -			 strlen(rec_hdr_str)) % rec_hdr_fmt_size;
> -		struct eeprom_table_record record;
> +		s = *pos - strlen(tbl_hdr_str) - tbl_hdr_fmt_size -
> +			strlen(rec_hdr_str);
> +		s = s / rec_hdr_fmt_size;
> +		r = *pos - strlen(tbl_hdr_str) - tbl_hdr_fmt_size -
> +			strlen(rec_hdr_str);
> +		r = r % rec_hdr_fmt_size;
>  
>  		for ( ; size > 0 && s < control->ras_num_recs; s++) {
>  			u32 ai = RAS_RI_TO_AI(control, s);



More information about the amd-gfx mailing list