Message ID | 1455106522-32307-1-git-send-email-palminha@synopsys.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Feb 10, 2016 at 12:15:22PM +0000, Carlos Palminha wrote: > Avoids null crash when encoders don't implement mode_fixup. > > Signed-off-by: Carlos Palminha <palminha@synopsys.com> > --- > drivers/gpu/drm/drm_crtc_helper.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c > index a02a7f9..ef3def7 100644 > --- a/drivers/gpu/drm/drm_crtc_helper.c > +++ b/drivers/gpu/drm/drm_crtc_helper.c > @@ -328,10 +328,12 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, > } > > encoder_funcs = encoder->helper_private; > - if (!(ret = encoder_funcs->mode_fixup(encoder, mode, > - adjusted_mode))) { > - DRM_DEBUG_KMS("Encoder fixup failed\n"); > - goto done; > + if (encoder_funcs->mode_fixup) { > + if (!(ret = encoder_funcs->mode_fixup(encoder, mode, > + adjusted_mode))) { > + DRM_DEBUG_KMS("Encoder fixup failed\n"); > + goto done; > + } At first I thought this isn't useful since it's the old legacy helper code that no new driver should use. But from a quick $ git grep mode_fixup.*encoder it looks like there's piles of existing drivers that could benefit from this with a small cleanup. So applied it, but can you pls follow up with patches to get rid of the now unecessary dummy functions? Thanks, Daniel > } > } > > -- > 2.5.0 >
On Wed, Feb 10, 2016 at 12:15:22PM +0000, Carlos Palminha wrote: > Avoids null crash when encoders don't implement mode_fixup. > > Signed-off-by: Carlos Palminha <palminha@synopsys.com> btw we could do the same game for drm_crtc_helper_funcs->mode_fixup. More dummy functions to nuke! -Daniel > --- > drivers/gpu/drm/drm_crtc_helper.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c > index a02a7f9..ef3def7 100644 > --- a/drivers/gpu/drm/drm_crtc_helper.c > +++ b/drivers/gpu/drm/drm_crtc_helper.c > @@ -328,10 +328,12 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, > } > > encoder_funcs = encoder->helper_private; > - if (!(ret = encoder_funcs->mode_fixup(encoder, mode, > - adjusted_mode))) { > - DRM_DEBUG_KMS("Encoder fixup failed\n"); > - goto done; > + if (encoder_funcs->mode_fixup) { > + if (!(ret = encoder_funcs->mode_fixup(encoder, mode, > + adjusted_mode))) { > + DRM_DEBUG_KMS("Encoder fixup failed\n"); > + goto done; > + } > } > } > > -- > 2.5.0 >
On Wed, Feb 10, 2016 at 12:15:22PM +0000, Carlos Palminha wrote: > Avoids null crash when encoders don't implement mode_fixup. > > Signed-off-by: Carlos Palminha <palminha@synopsys.com> One more thing I've forgotten: With these changes the kerneldoc in include/drm/drm_modeset_helper_vtables.h is now no longer accurate. It needs to be updated to explain that this hook is optional for both helpers. -Daniel > --- > drivers/gpu/drm/drm_crtc_helper.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c > index a02a7f9..ef3def7 100644 > --- a/drivers/gpu/drm/drm_crtc_helper.c > +++ b/drivers/gpu/drm/drm_crtc_helper.c > @@ -328,10 +328,12 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, > } > > encoder_funcs = encoder->helper_private; > - if (!(ret = encoder_funcs->mode_fixup(encoder, mode, > - adjusted_mode))) { > - DRM_DEBUG_KMS("Encoder fixup failed\n"); > - goto done; > + if (encoder_funcs->mode_fixup) { > + if (!(ret = encoder_funcs->mode_fixup(encoder, mode, > + adjusted_mode))) { > + DRM_DEBUG_KMS("Encoder fixup failed\n"); > + goto done; > + } > } > } > > -- > 2.5.0 >
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index a02a7f9..ef3def7 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c @@ -328,10 +328,12 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, } encoder_funcs = encoder->helper_private; - if (!(ret = encoder_funcs->mode_fixup(encoder, mode, - adjusted_mode))) { - DRM_DEBUG_KMS("Encoder fixup failed\n"); - goto done; + if (encoder_funcs->mode_fixup) { + if (!(ret = encoder_funcs->mode_fixup(encoder, mode, + adjusted_mode))) { + DRM_DEBUG_KMS("Encoder fixup failed\n"); + goto done; + } } }
Avoids null crash when encoders don't implement mode_fixup. Signed-off-by: Carlos Palminha <palminha@synopsys.com> --- drivers/gpu/drm/drm_crtc_helper.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)