summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci/drm/amd/amdgpu/amdgpu_debugfs.c
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2020-03-26 06:12:34 +0000
committerjsg <jsg@openbsd.org>2020-03-26 06:12:34 +0000
commit3f25a8de878f0aab50c8d523fa5e40a0f8c22eab (patch)
tree4899c3cb50c9efc7c40f1d8a3e389bf5f356d918 /sys/dev/pci/drm/amd/amdgpu/amdgpu_debugfs.c
parentdrm/amd/display: fix dcc swath size calculations on dcn1 (diff)
downloadwireguard-openbsd-3f25a8de878f0aab50c8d523fa5e40a0f8c22eab.tar.xz
wireguard-openbsd-3f25a8de878f0aab50c8d523fa5e40a0f8c22eab.zip
drm/amd/amdgpu: Fix GPR read from debugfs (v2)
From Tom St Denis 053a9862f0202cdcda9c56778dd98396a7cb3513 in linux 4.19.y/4.19.113 5bbc6604a62814511c32f2e39bc9ffb2c1b92cbe in mainline linux
Diffstat (limited to 'sys/dev/pci/drm/amd/amdgpu/amdgpu_debugfs.c')
-rw-r--r--sys/dev/pci/drm/amd/amdgpu/amdgpu_debugfs.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/pci/drm/amd/amdgpu/amdgpu_debugfs.c b/sys/dev/pci/drm/amd/amdgpu/amdgpu_debugfs.c
index 65cecfdd9b4..a90e83e5ab5 100644
--- a/sys/dev/pci/drm/amd/amdgpu/amdgpu_debugfs.c
+++ b/sys/dev/pci/drm/amd/amdgpu/amdgpu_debugfs.c
@@ -694,11 +694,11 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,
ssize_t result = 0;
uint32_t offset, se, sh, cu, wave, simd, thread, bank, *data;
- if (size & 3 || *pos & 3)
+ if (size > 4096 || size & 3 || *pos & 3)
return -EINVAL;
/* decode offset */
- offset = *pos & GENMASK_ULL(11, 0);
+ offset = (*pos & GENMASK_ULL(11, 0)) >> 2;
se = (*pos & GENMASK_ULL(19, 12)) >> 12;
sh = (*pos & GENMASK_ULL(27, 20)) >> 20;
cu = (*pos & GENMASK_ULL(35, 28)) >> 28;
@@ -729,7 +729,7 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,
while (size) {
uint32_t value;
- value = data[offset++];
+ value = data[result >> 2];
r = put_user(value, (uint32_t *)buf);
if (r) {
result = r;