From: Qiang Yu <[email protected]>
This fixes read /sys/class/drm/cardN/device/devcoredump/data
return empty content sometimes.
amdgpu_devcoredump_format() leaves struct drm_print_iterator's
.start field uninitialized on the stack before passing it to
drm_coredump_printer(). __drm_puts_coredump() compares the running
.offset against .start to decide whether to skip or copy each
chunk:
if (iterator->offset < iterator->start) {
if (iterator->offset + len <= iterator->start) {
iterator->offset += len;
return;
}
...
}
Fixes: 4f28b4930f8e ("drm/amdgpu: move devcoredump generation to a worker")
Signed-off-by: Qiang Yu <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
index 46043a1479e4..63d7ef78c025 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
@@ -219,6 +219,7 @@ amdgpu_devcoredump_format(char *buffer, size_t count,
struct amdgpu_coredump_inf
u32 ring_idx, off;
iter.data = buffer;
+ iter.start = 0;
iter.offset = 0;
iter.remain = count;
--
2.43.0