aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/atombios_i2c.c
diff options
context:
space:
mode:
authorGravatar Alexander Richards <electrodeyt@gmail.com> 2024-01-11 16:04:48 +0100
committerGravatar Alex Deucher <alexander.deucher@amd.com> 2024-01-15 18:35:37 -0500
commit4630d5031cd87438cc14a4619b8d4148eef1405e (patch)
treeb38dcfdb2613a215e81b60833525f21e187ba5eb /drivers/gpu/drm/amd/amdgpu/atombios_i2c.c
parentdrm/amd/display: Add Replay IPS register for DMUB command table (diff)
downloadlinux-4630d5031cd87438cc14a4619b8d4148eef1405e.tar.gz
linux-4630d5031cd87438cc14a4619b8d4148eef1405e.tar.bz2
linux-4630d5031cd87438cc14a4619b8d4148eef1405e.zip
drm/amdgpu: check PS, WS index
Theoretically, it would be possible for a buggy or malicious VBIOS to overwrite past the bounds of the passed parameters (or its own workspace); add bounds checking to prevent this from happening. Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3093 Signed-off-by: Alexander Richards <electrodeyt@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/atombios_i2c.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/atombios_i2c.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_i2c.c b/drivers/gpu/drm/amd/amdgpu/atombios_i2c.c
index af0335535f82..a6501114322f 100644
--- a/drivers/gpu/drm/amd/amdgpu/atombios_i2c.c
+++ b/drivers/gpu/drm/amd/amdgpu/atombios_i2c.c
@@ -86,7 +86,7 @@ static int amdgpu_atombios_i2c_process_i2c_ch(struct amdgpu_i2c_chan *chan,
args.ucSlaveAddr = slave_addr << 1;
args.ucLineNumber = chan->rec.i2c_id;
- amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args);
+ amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args, sizeof(args));
/* error */
if (args.ucStatus != HW_ASSISTED_I2C_STATUS_SUCCESS) {
@@ -172,5 +172,5 @@ void amdgpu_atombios_i2c_channel_trans(struct amdgpu_device *adev, u8 slave_addr
args.ucSlaveAddr = slave_addr;
args.ucLineNumber = line_number;
- amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args);
+ amdgpu_atom_execute_table(adev->mode_info.atom_context, index, (uint32_t *)&args, sizeof(args));
}