Felipe, thank you too. I realized this after a code review. Ben, what do you think? Geyslan Gregório Bem hackingbits.com 2013/10/7 Felipe Pena <felipensp@xxxxxxxxx>: > Hi, > > On Mon, Oct 7, 2013 at 7:35 PM, Ben Skeggs <bskeggs@xxxxxxxxxx> wrote: >> ----- Original Message ----- >>> From: "Geyslan G. Bem" <geyslan@xxxxxxxxx> >>> To: airlied@xxxxxxxx, bskeggs@xxxxxxxxxx, dri-devel@xxxxxxxxxxxxxxxxxxxxx >>> Cc: linux-kernel@xxxxxxxxxxxxxxx, kernel-br@xxxxxxxxxxxxxxxx, "Geyslan G. Bem" <geyslan@xxxxxxxxx> >>> Sent: Tuesday, 8 October, 2013 8:14:26 AM >>> Subject: [PATCH] drm: nouveau: fix nvbe leakage >>> >>> Free memory allocated to nvbe when returning NULL. >>> >>> Signed-off-by: Geyslan G. Bem <geyslan@xxxxxxxxx> >> NACK. ttm_dma_tt_init() calls the destructor if it fails, which frees the memory. >> >> Ben. >> > > But ttm_tt_destroy() just handles the ttm_tt part from nvbe, the nvbe > pointer itself is not being free'd. > >>> --- >>> drivers/gpu/drm/nouveau/nouveau_sgdma.c | 3 +++ >>> 1 file changed, 3 insertions(+) >>> >>> diff --git a/drivers/gpu/drm/nouveau/nouveau_sgdma.c >>> b/drivers/gpu/drm/nouveau/nouveau_sgdma.c >>> index 0843ebc..af8b66d 100644 >>> --- a/drivers/gpu/drm/nouveau/nouveau_sgdma.c >>> +++ b/drivers/gpu/drm/nouveau/nouveau_sgdma.c >>> @@ -105,6 +105,9 @@ nouveau_sgdma_create_ttm(struct ttm_bo_device *bdev, >>> nvbe->ttm.ttm.func = &nv50_sgdma_backend; >>> >>> if (ttm_dma_tt_init(&nvbe->ttm, bdev, size, page_flags, dummy_read_page)) >>> + { >>> + kfree(nvbe); >>> return NULL; >>> + } >>> return &nvbe->ttm.ttm; >>> } >>> -- >>> 1.8.4 >>> >>> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ > > > > -- > Regards, > Felipe Pena _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel