Skip to content

Commit

Permalink
drm/i915/bios: Fix the sequence size calculations for MIPI seq v3
Browse files Browse the repository at this point in the history
Two errors in a single line. The size was read from the wrong offset,
and the end index didn't take the five bytes for sequence byte and size
of sequence into account. Fix it all, and break up the calculations a
bit to make it clearer.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reported-and-tested-by: Mika Kahola <mika.kahola@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Fixes: 2a33d93 ("drm/i915/bios: add support for MIPI sequence block v3")
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1452784327-27258-1-git-send-email-jani.nikula@intel.com
  • Loading branch information
Jani Nikula committed Jan 15, 2016
1 parent 965fd60 commit 6765bd6
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions drivers/gpu/drm/i915/intel_bios.c
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,7 @@ static int goto_next_sequence_v3(const u8 *data, int index, int total)
{
int seq_end;
u16 len;
u32 size_of_sequence;

/*
* Could skip sequence based on Size of Sequence alone, but also do some
Expand All @@ -852,14 +853,24 @@ static int goto_next_sequence_v3(const u8 *data, int index, int total)
return 0;
}

seq_end = index + *((const u32 *)(data + 1));
/* Skip Sequence Byte. */
index++;

/*
* Size of Sequence. Excludes the Sequence Byte and the size itself,
* includes MIPI_SEQ_ELEM_END byte, excludes the final MIPI_SEQ_END
* byte.
*/
size_of_sequence = *((const uint32_t *)(data + index));
index += 4;

seq_end = index + size_of_sequence;
if (seq_end > total) {
DRM_ERROR("Invalid sequence size\n");
return 0;
}

/* Skip Sequence Byte and Size of Sequence. */
for (index = index + 5; index < total; index += len) {
for (; index < total; index += len) {
u8 operation_byte = *(data + index);
index++;

Expand Down

0 comments on commit 6765bd6

Please sign in to comment.