On Fri, 2008-10-17 at 13:15 +0800, Zhenyu Wang wrote:
> From 09a461ca6d05b0c6e82aeca158bad6549ba84904 Mon Sep 17 00:00:00 2001
> From: Zhenyu Wang <[EMAIL PROTECTED]>
> Date: Fri, 17 Oct 2008 11:20:14 +0800
> Subject: [PATCH] drm: fix stalled cliprects when update drawable info with 
> zero rects.
> 
> When passed in drawable's cliprect number as zero, we may
> still alloc and leave a stalled cliprects. Fix by clean up
> cliprects in that case.
> 
> Signed-off-by: Zhenyu Wang <[EMAIL PROTECTED]>
> ---
>  drivers/gpu/drm/drm_drawable.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_drawable.c b/drivers/gpu/drm/drm_drawable.c
> index 1839c57..70b15d1 100644
> --- a/drivers/gpu/drm/drm_drawable.c
> +++ b/drivers/gpu/drm/drm_drawable.c
> @@ -111,7 +111,9 @@ int drm_update_drawable_info(struct drm_device *dev, void 
> *data, struct drm_file
>  
>       switch (update->type) {
>       case DRM_DRAWABLE_CLIPRECTS:
> -             if (update->num != info->num_rects) {
> +             if (update->num == 0)
> +                     rects = NULL;
> +             else if (update->num != info->num_rects) {
>                       rects = drm_alloc(update->num * sizeof(struct 
> drm_clip_rect),
>                                        DRM_MEM_BUFS);
>               } else

Well, if I'm reading things right, when you pass zero cliprects, you'd
get either
previously != 0: drm_alloc(0, DRM_MEM_BUFS) = ZERO_SIZE_PTR;
previously == 0: whatever the previous value was (NULL or ZERO_SIZE_PTR)

However, given that I earlier today wrote a fix that tried to use
info->rects != NULL instead of info->num_rects != 0 before dereferening
the first rect, this seems like a sensible change to me.  Pushed to
drm-intel-next with a change of the commit message:

commit 8b4daf046d90f1b60c53f14ef89b6fd6d8b35f30
Author: Zhenyu Wang <[EMAIL PROTECTED]>
Date:   Fri Oct 17 13:15:48 2008 +0800

    drm: Set cliprects to NULL when changing drawable to having 0 cliprects.
    
    This avoids setting the cliprects pointer to a zero-sized allocation.
    
    Signed-off-by: Zhenyu Wang <[EMAIL PROTECTED]>
    Signed-off-by: Eric Anholt <[EMAIL PROTECTED]>

-- 
Eric Anholt
[EMAIL PROTECTED]                         [EMAIL PROTECTED]


Attachment: signature.asc
Description: This is a digitally signed message part

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to