On Tue, May 5, 2015 at 3:24 AM, Christian König <deathsimple@xxxxxxxxxxx> wrote: > From: "monk.liu" <monk.liu@xxxxxxx> > > Fixing a memory leak with userptrs. > > v2: clean up the loop, use an iterator instead > > Signed-off-by: monk.liu <monk.liu@xxxxxxx> > Signed-off-by: Christian König <christian.koenig@xxxxxxx> > CC: stable@xxxxxxxxxxxxxxx Applied to my -fixes tree. Alex > --- > drivers/gpu/drm/radeon/radeon_ttm.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c > index b292aca..921dd0f 100644 > --- a/drivers/gpu/drm/radeon/radeon_ttm.c > +++ b/drivers/gpu/drm/radeon/radeon_ttm.c > @@ -591,7 +591,7 @@ static void radeon_ttm_tt_unpin_userptr(struct ttm_tt *ttm) > { > struct radeon_device *rdev = radeon_get_rdev(ttm->bdev); > struct radeon_ttm_tt *gtt = (void *)ttm; > - struct scatterlist *sg; > + struct sg_page_iter sg_iter; > int i; > > int write = !(gtt->userflags & RADEON_GEM_USERPTR_READONLY); > @@ -605,9 +605,8 @@ static void radeon_ttm_tt_unpin_userptr(struct ttm_tt *ttm) > /* free the sg table and pages again */ > dma_unmap_sg(rdev->dev, ttm->sg->sgl, ttm->sg->nents, direction); > > - for_each_sg(ttm->sg->sgl, sg, ttm->sg->nents, i) { > - struct page *page = sg_page(sg); > - > + for_each_sg_page(ttm->sg->sgl, &sg_iter, ttm->sg->nents, 0) { > + struct page *page = sg_page_iter_page(&sg_iter); > if (!(gtt->userflags & RADEON_GEM_USERPTR_READONLY)) > set_page_dirty(page); > > -- > 1.9.1 > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel