xf86-video-savage: Fix crash by null pointer access on XVideo when DRI is not available

Alex Deucher alexdeucher at gmail.com
Mon Mar 23 09:27:06 PDT 2009


Pushed, thanks!

On 3/16/09, Alex Villací­s Lasso <a_villacis at palosanto.com> wrote:
> The Linux kernel version 2.6.29-rc7 introduced a regression that makes a
> mmap2() call on /dev/dri/card0 fail with EAGAIN on Savage chipsets (don't
> know about other chipsets yet). I have not yet bisected it or filed a bug
> for it (since I want to check 2.6.29-rc8 for this bug), but this in turn
> uncovered a bug in my recent changes to the savage driver. When DRI is not
> available, an attempt to query available memory for xvideo via AGP (which
> requires DRI) results in a NULL pointer access to psav->DRIServerInfo, even
> if xvideo is configured not to use AGP. This patch fixes it by adding a NULL
> pointer check that allows it to use the previously-available framebuffer
> upload for xvideo while I hunt down this bug.
>
>
>  Changelog:
>  * Add NULL pointer check before trying to access DRIServerInfo, since it
> might be NULL when DRI fails to initialize.
>
>  --
>  perl -e '$x=2.3;printf("%.0f + %.0f = %.0f\n",$x,$x,$x+$x);'
>
>
> From ce37ca3de7aa80f176295ad8d5ace111ec28888a Mon Sep 17
> 00:00:00 2001
>  From: =?utf-8?q?Alex=20Villac=C3=ADs=20Lasso?=
> <alex at karlalex.palosanto.com>
>  Date: Sat, 14 Mar 2009 21:34:48 -0500
>  Subject: [PATCH] Fix crash by null pointer access when DRI is not
> available.
>
>  ---
>   src/savage_video.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
>  diff --git a/src/savage_video.c b/src/savage_video.c
>  index 57483e0..bccb801 100644
>  --- a/src/savage_video.c
>  +++ b/src/savage_video.c
>  @@ -1965,7 +1965,7 @@ SavagePutImage(
>
>      /* Check whether AGP buffers can be allocated. If not, fall back to
> ordinary
>         upload to framebuffer (slower) */
>  -    if (!pPriv->tried_agp && !psav->IsPCI && psav->drmFD > 0) {
>  +    if (!pPriv->tried_agp && !psav->IsPCI && psav->drmFD > 0 &&
> psav->DRIServerInfo != NULL) {
>          int ret;
>         SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
>
>  --
>  1.6.0.6
>
>
> _______________________________________________
>  xorg mailing list
>  xorg at lists.freedesktop.org
>  http://lists.freedesktop.org/mailman/listinfo/xorg
>
>



More information about the xorg mailing list