]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: initialize iter.start in amdgpu_devcoredump_format
authorQiang Yu <Qiang.Yu@amd.com>
Tue, 26 May 2026 06:45:48 +0000 (14:45 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 17 Jun 2026 22:06:53 +0000 (18:06 -0400)
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: 4bbba79a7f1d ("drm/amdgpu: move devcoredump generation to a worker")
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Qiang Yu <Qiang.Yu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit cd6397b7af8262a380e188dc32e9de11ff897ed2)

drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c

index 27830518a2308a4babba9085702daa4087795977..bed68f0c30806aef9b906ba36882cd2e27a207d6 100644 (file)
@@ -229,6 +229,7 @@ amdgpu_devcoredump_format(char *buffer, size_t count, struct amdgpu_coredump_inf
 
        sizing_pass = buffer == NULL;
        iter.data = buffer;
+       iter.start = 0;
        iter.offset = 0;
        iter.remain = count;