Re: [PATCH] drm/cma-helper: fixup compilation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux