[PATCH] drm/cma-helper: fixup compilation

Thierry Reding thierry.reding at avionic-design.de
Mon Feb 18 23:43:39 PST 2013


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 at ffwll.ch>
> 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 at intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  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);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20130219/801e1ee0/attachment.pgp>


More information about the dri-devel mailing list