[PATCH 3/3] agp/intel: Destroy the scatterlist on allocation failure

Zhenyu Wang zhenyuw at linux.intel.com
Mon Jul 26 19:00:07 PDT 2010


On 2010.07.24 18:29:37 +0100, Chris Wilson wrote:
> A side-effect of being able to use custom page allocations with the
> sg_table is that it cannot reap the partially constructed scatterlist if
> fails to allocate a page. So we need to call sg_free_table() ourselves
> if sg_alloc_table() fails.

Why? Doesn't sg_alloc_table() handle the failure case to call sg_free_table()
already?

> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc Dave Airlie <airlied at redhat.com>
> ---
>  drivers/char/agp/intel-gtt.c |   13 ++++++++-----
>  1 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
> index f97122a..5615d70 100644
> --- a/drivers/char/agp/intel-gtt.c
> +++ b/drivers/char/agp/intel-gtt.c
> @@ -104,7 +104,7 @@ static int intel_agp_map_memory(struct agp_memory *mem)
>  	DBG("try mapping %lu pages\n", (unsigned long)mem->page_count);
>  
>  	if (sg_alloc_table(&st, mem->page_count, GFP_KERNEL))
> -		return -ENOMEM;
> +		goto err;
>  
>  	mem->sg_list = sg = st.sgl;
>  
> @@ -113,11 +113,14 @@ static int intel_agp_map_memory(struct agp_memory *mem)
>  
>  	mem->num_sg = pci_map_sg(intel_private.pcidev, mem->sg_list,
>  				 mem->page_count, PCI_DMA_BIDIRECTIONAL);
> -	if (unlikely(!mem->num_sg)) {
> -		intel_agp_free_sglist(mem);
> -		return -ENOMEM;
> -	}
> +	if (unlikely(!mem->num_sg))
> +		goto err;
> +
>  	return 0;
> +
> +err:
> +	sg_free_table(&st);
> +	return -ENOMEM;
>  }
>  
>  static void intel_agp_unmap_memory(struct agp_memory *mem)
> -- 
> 1.7.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20100727/e0b2131c/attachment.pgp>


More information about the dri-devel mailing list