From c6594c744d8fca738a1a8f5177c84a05899695dc Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Tue, 31 Jan 2017 15:49:40 -0800 Subject: gpu: nvgpu: Remove ref count from as_share Remove the broke ref counting from as_share. The ref-count is incremented for every bind channel but never decremented. This results in VMs never being freed. Bug 1846718 Change-Id: I6253b3eab7c7471d3ed6feddb3705c49a8704bed Signed-off-by: Alex Waterman Reviewed-on: http://git-master/r/1296900 Reviewed-by: Richard Zhao Reviewed-by: svccoveritychecker Reviewed-by: Konsta Holtta GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/as_gk20a.c | 10 +--------- drivers/gpu/nvgpu/gk20a/as_gk20a.h | 1 - 2 files changed, 1 insertion(+), 10 deletions(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/gk20a/as_gk20a.c b/drivers/gpu/nvgpu/gk20a/as_gk20a.c index c8b3b02f..e4bd8b73 100644 --- a/drivers/gpu/nvgpu/gk20a/as_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/as_gk20a.c @@ -54,7 +54,6 @@ int gk20a_as_alloc_share(struct gk20a_as *as, as_share->as = as; as_share->id = generate_as_share_id(as_share->as); - as_share->ref_cnt.counter = 1; /* this will set as_share->vm. */ err = gk20a_busy(g->dev); @@ -85,9 +84,6 @@ int gk20a_as_release_share(struct gk20a_as_share *as_share) gk20a_dbg_fn(""); - if (atomic_dec_return(&as_share->ref_cnt) > 0) - return 0; - err = gk20a_busy(g->dev); if (err) return err; @@ -114,14 +110,10 @@ static int gk20a_as_ioctl_bind_channel( if (!ch || gk20a_channel_as_bound(ch)) return -EINVAL; - atomic_inc(&as_share->ref_cnt); - /* this will set channel_gk20a->vm */ err = ch->g->ops.mm.vm_bind_channel(as_share, ch); - if (err) { - atomic_dec(&as_share->ref_cnt); + if (err) return err; - } return err; } diff --git a/drivers/gpu/nvgpu/gk20a/as_gk20a.h b/drivers/gpu/nvgpu/gk20a/as_gk20a.h index d347479e..9b0c6e14 100644 --- a/drivers/gpu/nvgpu/gk20a/as_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/as_gk20a.h @@ -25,7 +25,6 @@ struct vm_gk20a; struct gk20a_as_share { struct gk20a_as *as; - atomic_t ref_cnt; int id; struct vm_gk20a *vm; }; -- cgit v1.2.2