[PATCH] drm/bochs: Fix NULL dereference on atomic_disable helper

Daniel Vetter
2019-03-11T13:23:58Z

On Mon, Mar 11, 2019 at 02:07:16PM +0100, Gerd Hoffmann
wrote:
>   Hi,
>
> > > >  static void bochs_crtc_atomic_flush(struct drm_crtc *crtc,
> > > >  				    struct drm_crtc_state *old_crtc_state)
> > > >  {
> > > > @@ -66,6 +71,7 @@ static const struct drm_crtc_funcs
bochs_crtc_funcs = {
> > > >  static const struct drm_crtc_helper_funcs
bochs_helper_funcs = {
> > > >  	.mode_set_nofb = bochs_crtc_mode_set_nofb,
> > > >  	.atomic_enable = bochs_crtc_atomic_enable,
> > > > +	.atomic_disable = bochs_crtc_atomic_disable,
> > >
> > > Shouldn't we make the callback optional instead of adding
empty dummy
> > > functions to drivers?
> >
> > Hi Gerd,
> >
> > I agree, and I can work in this issue.
> > Just one question, should we make atomic_enable optional as well?
>
> IIRC the drm code checks for the atomic_enable callback presence to
> figure whenever it should take the atomic or legacy code paths.

It should check for drm_driver->mode_config.funcs.atomic_commit for that,
see drm_drv_uses_atomic_modeset(). Anything else should be a bug.

Or do you mean the fallback to the old crtc helper prepare/commit
callbacks? We'd need to make all of them optional ofc, with atomic_
variants being preferred ofc.
-Daniel


>
> So, I think that will not work.
>
> cheers,
>   Gerd
>

--
Daniel Vetter
Software Engineer, Intel Corporation