[Intel-gfx] [PATCH 08/15] drm/i915/dsi: be defensive about out of bounds operation byte
Daniel Vetter
daniel at ffwll.ch
Tue Jan 5 06:15:23 PST 2016
On Mon, Dec 21, 2015 at 03:10:59PM +0200, Jani Nikula wrote:
> Untie the VBT based generic panel driver from the VBT parsing, so that
> the two don't have to be updated in lockstep.
>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
> drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 22 +++++++++-------------
> 1 file changed, 9 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
> index 45512e0df57a..ba5355506590 100644
> --- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
> +++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
> @@ -232,11 +232,9 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
> typedef const u8 * (*fn_mipi_elem_exec)(struct intel_dsi *intel_dsi,
> const u8 *data);
> static const fn_mipi_elem_exec exec_elem[] = {
> - NULL, /* reserved */
> - mipi_exec_send_packet,
> - mipi_exec_delay,
> - mipi_exec_gpio,
> - NULL, /* status read; later */
> + [MIPI_SEQ_ELEM_SEND_PKT] = mipi_exec_send_packet,
> + [MIPI_SEQ_ELEM_DELAY] = mipi_exec_delay,
> + [MIPI_SEQ_ELEM_GPIO] = mipi_exec_gpio,
> };
>
> /*
> @@ -264,7 +262,6 @@ static const char *sequence_name(enum mipi_seq seq_id)
> static void generic_exec_sequence(struct intel_dsi *intel_dsi, const u8 *data)
> {
> fn_mipi_elem_exec mipi_elem_exec;
> - int index;
>
> if (!data)
> return;
> @@ -277,15 +274,14 @@ static void generic_exec_sequence(struct intel_dsi *intel_dsi, const u8 *data)
>
> /* parse each byte till we reach end of sequence byte - 0x00 */
> while (1) {
> - index = *data;
> - mipi_elem_exec = exec_elem[index];
> - if (!mipi_elem_exec) {
> - DRM_ERROR("Unsupported MIPI element, skipping sequence execution\n");
> + u8 operation_byte = *data++;
> + if (operation_byte >= ARRAY_SIZE(exec_elem) ||
> + !exec_elem[operation_byte]) {
> + DRM_ERROR("Unsupported MIPI operation byte %u\n",
Maybe DRM_ERROR in the previous patch too? Just for ocd consistency.
Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> + operation_byte);
> return;
> }
> -
> - /* goto element payload */
> - data++;
> + mipi_elem_exec = exec_elem[operation_byte];
>
> /* execute the element specific rotines */
> data = mipi_elem_exec(intel_dsi, data);
> --
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list