diff options
Diffstat (limited to 'drivers/gpu/nvgpu/boardobj/boardobj.c')
-rw-r--r-- | drivers/gpu/nvgpu/boardobj/boardobj.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/boardobj/boardobj.c b/drivers/gpu/nvgpu/boardobj/boardobj.c index c0646eb4..f9be6981 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobj.c +++ b/drivers/gpu/nvgpu/boardobj/boardobj.c | |||
@@ -41,6 +41,7 @@ u32 boardobj_construct_super(struct gk20a *g, struct boardobj **ppboardobj, | |||
41 | *ppboardobj = nvgpu_kzalloc(g, size); | 41 | *ppboardobj = nvgpu_kzalloc(g, size); |
42 | if (*ppboardobj == NULL) | 42 | if (*ppboardobj == NULL) |
43 | return -ENOMEM; | 43 | return -ENOMEM; |
44 | (*ppboardobj)->allocated = true; | ||
44 | } | 45 | } |
45 | 46 | ||
46 | pboardobj = *ppboardobj; | 47 | pboardobj = *ppboardobj; |
@@ -53,6 +54,8 @@ u32 boardobj_construct_super(struct gk20a *g, struct boardobj **ppboardobj, | |||
53 | pboardobj->destruct = boardobj_destruct_super; | 54 | pboardobj->destruct = boardobj_destruct_super; |
54 | pboardobj->pmudatainit = boardobj_pmudatainit_super; | 55 | pboardobj->pmudatainit = boardobj_pmudatainit_super; |
55 | 56 | ||
57 | nvgpu_list_add(&pboardobj->node, &g->boardobj_head); | ||
58 | |||
56 | return 0; | 59 | return 0; |
57 | } | 60 | } |
58 | 61 | ||
@@ -61,7 +64,11 @@ u32 boardobj_destruct_super(struct boardobj *pboardobj) | |||
61 | gk20a_dbg_info(""); | 64 | gk20a_dbg_info(""); |
62 | if (pboardobj == NULL) | 65 | if (pboardobj == NULL) |
63 | return -EINVAL; | 66 | return -EINVAL; |
64 | nvgpu_kfree(pboardobj->g, pboardobj); | 67 | |
68 | nvgpu_list_del(&pboardobj->node); | ||
69 | if (pboardobj->allocated) | ||
70 | nvgpu_kfree(pboardobj->g, pboardobj); | ||
71 | |||
65 | return 0; | 72 | return 0; |
66 | } | 73 | } |
67 | 74 | ||