On Wed, Dec 17, 2014 at 6:56 AM, <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > We had a bug in i915 land recently where X passed in a zeroed mode with > mode_valid=1 to setcrtc. That didn't go down so well and caused a > div-by-zero in i915. > > For a long time I've been thinking that we need some real checks to > validate the modes we feed into the hardware. I started to sketch out > something for that but it quickly turned into a bit of a nightmare > with the whole panel fitter, stereo 3D, SDVO etc. special cases we > have in i915. > > So I gave up on that for now, and instead cooked up this small series > to add some basic sanity checks to the mode validation, and also apply > the same sanity checks to user provided modes. This is enough to > prevent the div-by-zero in i915 with buggy X. > > The risk is that we start to reject some modes that more or less worked > by accident before. Given how lax we've been in handling the panel fitter > on i915 for instance, this could be a real problem if people have been > useing custom modes that have been filled out only partially. But I'm > hoping the number of users doing that is so small that we can risk it. > > The other concern is drivers which might also provide funky modes from > their .get_modes(). I tried to look at all the drivers a bit, and most > produce modes via EDID, CVT, DMT, or drm_display_mode_from_videomode(). > All of those look safe, except mode->clock might be an issue with > drm_display_mode_from_videomode(), but hopefully there's some kind of > clock provided in most cases. I didn't dig through all the nooks and > crannies in all drivers though, so may have missed something. For the series: Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > > Ville Syrjälä (3): > drm: Reorganize probed mode validation > drm: Perform basic sanity checks on probed modes > drm: Do basic sanity checks for user modes > > drivers/gpu/drm/drm_crtc.c | 6 ++++ > drivers/gpu/drm/drm_modes.c | 56 ++++++++++++++++++++++++++++++-------- > drivers/gpu/drm/drm_probe_helper.c | 43 ++++++++++++++--------------- > include/drm/drm_modes.h | 6 ++-- > 4 files changed, 74 insertions(+), 37 deletions(-) > > -- > 2.0.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel