From 7feff293e4f88ddae92ccf05ff86386c8d1f5c0e Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Tue, 20 Dec 2016 15:53:26 -0800 Subject: gpu: nvgpu: Free arb substructures only if arb allocated nvgpu_clk_arb_init_arbiter() allocates master structure arb, and sub-structures which is assigns as members of arb. At failure, there's a single error label, and it tries to free the members of arb without checking that arb was allocated. Change-Id: Ifac7552b05dad17036835eb3ee624eae351ccb7d Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/1279226 GVS: Gerrit_Virtual_Submit Reviewed-by: Thomas Fleury --- drivers/gpu/nvgpu/clk/clk_arb.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'drivers/gpu/nvgpu/clk') diff --git a/drivers/gpu/nvgpu/clk/clk_arb.c b/drivers/gpu/nvgpu/clk/clk_arb.c index e8213b47..e4f658f6 100644 --- a/drivers/gpu/nvgpu/clk/clk_arb.c +++ b/drivers/gpu/nvgpu/clk/clk_arb.c @@ -296,12 +296,14 @@ int nvgpu_clk_arb_init_arbiter(struct gk20a *g) init_fail: - kfree(arb->gpc2clk_f_points); - kfree(arb->mclk_f_points); + if (arb) { + kfree(arb->gpc2clk_f_points); + kfree(arb->mclk_f_points); - for (index = 0; index < 2; index++) { - kfree(arb->vf_table_pool[index].gpc2clk_points); - kfree(arb->vf_table_pool[index].mclk_points); + for (index = 0; index < 2; index++) { + kfree(arb->vf_table_pool[index].gpc2clk_points); + kfree(arb->vf_table_pool[index].mclk_points); + } } kfree(arb); -- cgit v1.2.2