On Fri, Feb 15, 2013 at 11:24:35AM +0100, Daniel Vetter wrote: > /me grabs a few brown paper bags > > So it looks like I've broken compilation in > > commit 6aed8ec3f76a22217c9ae183d32b1aa990bed069 > Author: Daniel Vetter <daniel.vetter@xxxxxxxx> > Date: Sun Jan 20 17:32:21 2013 +0100 > > drm: review locking for drm_fb_helper_restore_fbdev_mode > > Fix it up again. > > Reported-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/drm_fb_cma_helper.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c > index e851658..ef68e34 100644 > --- a/drivers/gpu/drm/drm_fb_cma_helper.c > +++ b/drivers/gpu/drm/drm_fb_cma_helper.c > @@ -377,6 +377,8 @@ EXPORT_SYMBOL_GPL(drm_fbdev_cma_fini); > */ > void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma) > { > + struct drm_device *dev = fbdev_cma->fb_helper.dev; > + > drm_modeset_lock_all(dev); > if (fbdev_cma) > drm_fb_helper_restore_fbdev_mode(&fbdev_cma->fb_helper); The above check indicates that fbdev_cma might be NULL, so you're potentially dereferencing NULL when assigning the dev variable. Perhaps a better way would be to move the locking into the if block, as in the patch below. Thierry diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c index e851658..54a250f 100644 --- a/drivers/gpu/drm/drm_fb_cma_helper.c +++ b/drivers/gpu/drm/drm_fb_cma_helper.c @@ -377,10 +377,11 @@ EXPORT_SYMBOL_GPL(drm_fbdev_cma_fini); */ void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma) { - drm_modeset_lock_all(dev); - if (fbdev_cma) + if (fbdev_cma) { + drm_modeset_lock_all(fbdev_cma->fb_helper.dev); drm_fb_helper_restore_fbdev_mode(&fbdev_cma->fb_helper); - drm_modeset_unlock_all(dev); + drm_modeset_unlock_all(fbdev_cma->fb_helper.dev); + } } EXPORT_SYMBOL_GPL(drm_fbdev_cma_restore_mode);
Attachment:
pgpLzRywhIQpo.pgp
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel