[Intel-gfx] [PATCH 07/14] drm/i915: Validate BDB section before reading
Daniel Vetter
daniel at ffwll.ch
Fri Apr 25 10:03:28 CEST 2014
On Thu, Apr 24, 2014 at 09:23:24PM +0530, Kumar, Shobhit wrote:
> On 4/19/2014 2:34 AM, Rodrigo Vivi wrote:
> >From: Chris Wilson <chris at chris-wilson.co.uk>
> >
> >Make sure that the whole BDB section is within the MMIO region prior to
> >accessing it contents. That we don't read outside of the secion is left
> >up to the individual section parsers.
> >
> >Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> >Signed-off-by: Rodrigo Vivi <rodrigo.vivi at gmail.com>
> >---
> > drivers/gpu/drm/i915/intel_bios.c | 8 +++++++-
> > 1 file changed, 7 insertions(+), 1 deletion(-)
> >
> >diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
> >index fc9e806..2945f57 100644
> >--- a/drivers/gpu/drm/i915/intel_bios.c
> >+++ b/drivers/gpu/drm/i915/intel_bios.c
> >@@ -49,13 +49,19 @@ find_section(struct bdb_header *bdb, int section_id)
> > total = bdb->bdb_size;
> >
> > /* walk the sections looking for section_id */
> >- while (index < total) {
> >+ while (index + 3 < total) {
> > current_id = *(base + index);
> > index++;
> >+
> > current_size = *((u16 *)(base + index));
> > index += 2;
> >+
> >+ if (index + current_size > total)
> >+ return NULL;
> >+
> > if (current_id == section_id)
> > return base + index;
> >+
> > index += current_size;
> > }
> >
>
> Reviewed-by: Shobhit Kumar <shobhit.kumar at intel.com>
Queued for -next, thanks for the patch.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the Intel-gfx
mailing list