Messages in this thread | | | Date | Wed, 31 Mar 2010 23:43:23 -0400 | Subject | Re: [patch] radeon: range check issues | From | Alex Deucher <> |
| |
On Sun, Mar 28, 2010 at 7:23 AM, Dan Carpenter <error27@gmail.com> wrote: > This change makes the array larger, "MAX_SUPPORTED_TV_TIMING_V1_2" is 3 > and the original size "MAX_SUPPORTED_TV_TIMING" is 2. > > Also there were checks that were off by one. > > Signed-off-by: Dan Carpenter <error27@gmail.com> > --- > Compile tested only. Changing the array size seemed like the right > thing to do, in the context, but please review carefully.
That patch is correct and corresponds to the actual table sizes in the vbios.
Alex
> > diff --git a/drivers/gpu/drm/radeon/atombios.h b/drivers/gpu/drm/radeon/atombios.h > index 6732b5d..27e2c71 100644 > --- a/drivers/gpu/drm/radeon/atombios.h > +++ b/drivers/gpu/drm/radeon/atombios.h > @@ -2912,7 +2912,7 @@ typedef struct _ATOM_ANALOG_TV_INFO_V1_2 > UCHAR ucTV_BootUpDefaultStandard; > UCHAR ucExt_TV_ASIC_ID; > UCHAR ucExt_TV_ASIC_SlaveAddr; > - ATOM_DTD_FORMAT aModeTimings[MAX_SUPPORTED_TV_TIMING]; > + ATOM_DTD_FORMAT aModeTimings[MAX_SUPPORTED_TV_TIMING_V1_2]; > }ATOM_ANALOG_TV_INFO_V1_2; > > typedef struct _ATOM_DPCD_INFO > diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c > index 93783b1..bdc0ab3 100644 > --- a/drivers/gpu/drm/radeon/radeon_atombios.c > +++ b/drivers/gpu/drm/radeon/radeon_atombios.c > @@ -1275,7 +1275,7 @@ bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index, > switch (crev) { > case 1: > tv_info = (ATOM_ANALOG_TV_INFO *)(mode_info->atom_context->bios + data_offset); > - if (index > MAX_SUPPORTED_TV_TIMING) > + if (index >= MAX_SUPPORTED_TV_TIMING) > return false; > > mode->crtc_htotal = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_Total); > @@ -1313,7 +1313,7 @@ bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index, > break; > case 2: > tv_info_v1_2 = (ATOM_ANALOG_TV_INFO_V1_2 *)(mode_info->atom_context->bios + data_offset); > - if (index > MAX_SUPPORTED_TV_TIMING_V1_2) > + if (index >= MAX_SUPPORTED_TV_TIMING_V1_2) > return false; > > dtd_timings = &tv_info_v1_2->aModeTimings[index]; > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |