mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
drm/i915/gmbus: fix spurious timeout on 512-byte burst reads
When reading exactly 512 bytes with burst read enabled, the
extra_byte_added path breaks out of the inner do-while without
decrementing len. The outer while(len) then re-enters and gmbus_wait()
times out since all data has been delivered. Decrement len before the
break so the outer loop terminates correctly.
Fixes: d5dc0f43f2 ("drm/i915/gmbus: Enable burst read")
Signed-off-by: Samasth Norway Ananda <samasth.norway.ananda@oracle.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patch.msgid.link/20260316231920.135438-2-samasth.norway.ananda@oracle.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
0fb03890d1
commit
4ab0f09ee7
|
|
@ -495,8 +495,10 @@ gmbus_xfer_read_chunk(struct intel_display *display,
|
|||
|
||||
val = intel_de_read_fw(display, GMBUS3(display));
|
||||
do {
|
||||
if (extra_byte_added && len == 1)
|
||||
if (extra_byte_added && len == 1) {
|
||||
len--;
|
||||
break;
|
||||
}
|
||||
|
||||
*buf++ = val & 0xff;
|
||||
val >>= 8;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user