diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2017-03-29 04:58:15 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-30 15:36:15 -0400 |
commit | 1ca4c5f069f8b055248aab61619c9a2490b1fe9c (patch) | |
tree | 1d0ba3accc2a86f346da9d73ad9107d90e57cb6e /drivers/gpu/nvgpu/gp106/clk_gp106.c | |
parent | caee1441b899383a10b2848e43dc4255f8d5342f (diff) |
gpu: nvgpu: check return value of mutex_init in clk code
- check return value of nvgpu_mutex_init in
clk_gk20a.c/clk_gm20b.c/clk_gp106.c
- add corresponding nvgpu_mutex_destroy calls
Jira NVGPU-13
Change-Id: If6ddc2c924e1ab13274b857f904859033722479a
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/1321293
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp106/clk_gp106.c')
-rw-r--r-- | drivers/gpu/nvgpu/gp106/clk_gp106.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gp106/clk_gp106.c b/drivers/gpu/nvgpu/gp106/clk_gp106.c index 8869c94b..8bc47ead 100644 --- a/drivers/gpu/nvgpu/gp106/clk_gp106.c +++ b/drivers/gpu/nvgpu/gp106/clk_gp106.c | |||
@@ -78,18 +78,23 @@ static int gp106_init_clk_support(struct gk20a *g) { | |||
78 | 78 | ||
79 | gk20a_dbg_fn(""); | 79 | gk20a_dbg_fn(""); |
80 | 80 | ||
81 | nvgpu_mutex_init(&clk->clk_mutex); | 81 | err = nvgpu_mutex_init(&clk->clk_mutex); |
82 | if (err) | ||
83 | return err; | ||
82 | 84 | ||
83 | clk->clk_namemap = (struct namemap_cfg *) | 85 | clk->clk_namemap = (struct namemap_cfg *) |
84 | nvgpu_kzalloc(g, sizeof(struct namemap_cfg) * NUM_NAMEMAPS); | 86 | nvgpu_kzalloc(g, sizeof(struct namemap_cfg) * NUM_NAMEMAPS); |
85 | 87 | ||
86 | if (!clk->clk_namemap) | 88 | if (!clk->clk_namemap) { |
89 | nvgpu_mutex_destroy(&clk->clk_mutex); | ||
87 | return -ENOMEM; | 90 | return -ENOMEM; |
91 | } | ||
88 | 92 | ||
89 | clk->namemap_xlat_table = nvgpu_kcalloc(g, NUM_NAMEMAPS, sizeof(u32)); | 93 | clk->namemap_xlat_table = nvgpu_kcalloc(g, NUM_NAMEMAPS, sizeof(u32)); |
90 | 94 | ||
91 | if (!clk->namemap_xlat_table) { | 95 | if (!clk->namemap_xlat_table) { |
92 | nvgpu_kfree(g, clk->clk_namemap); | 96 | nvgpu_kfree(g, clk->clk_namemap); |
97 | nvgpu_mutex_destroy(&clk->clk_mutex); | ||
93 | return -ENOMEM; | 98 | return -ENOMEM; |
94 | } | 99 | } |
95 | 100 | ||
@@ -265,8 +270,15 @@ err_out: | |||
265 | } | 270 | } |
266 | #endif /* CONFIG_DEBUG_FS */ | 271 | #endif /* CONFIG_DEBUG_FS */ |
267 | 272 | ||
273 | static int gp106_suspend_clk_support(struct gk20a *g) | ||
274 | { | ||
275 | nvgpu_mutex_destroy(&g->clk.clk_mutex); | ||
276 | return 0; | ||
277 | } | ||
278 | |||
268 | void gp106_init_clk_ops(struct gpu_ops *gops) { | 279 | void gp106_init_clk_ops(struct gpu_ops *gops) { |
269 | gops->clk.init_clk_support = gp106_init_clk_support; | 280 | gops->clk.init_clk_support = gp106_init_clk_support; |
270 | gops->clk.get_crystal_clk_hz = gp106_crystal_clk_hz; | 281 | gops->clk.get_crystal_clk_hz = gp106_crystal_clk_hz; |
271 | gops->clk.measure_freq = gp106_clk_measure_freq; | 282 | gops->clk.measure_freq = gp106_clk_measure_freq; |
283 | gops->clk.suspend_clk_support = gp106_suspend_clk_support; | ||
272 | } | 284 | } |