[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