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; + } } }
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
dri-devel@lists.freedesktop.org