summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/perf/vfe_equ.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-12-20 17:11:54 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-01-04 04:44:25 -0500
commitf37f4e27e362629d5c187817104d48d703c380cc (patch)
tree8dddaa1d926016848c6cebc4aa9f4a3612341da1 /drivers/gpu/nvgpu/perf/vfe_equ.c
parent2a95a288b285b0eff16a8825298c416d185693fb (diff)
gpu: nvgpu: Use perf table only VBIOS supports it
We retrieve perf table from VBIOS only if respective HAL op is implemented. Later in code we unconditionally dereference the pointer which can lead to NULL pointer access. Fix by early aborting creation of devinit tables if the perf VBIOS getter is missing. Change-Id: If48aa6dac724056dd1feb2ef520e343736d4db85 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1279223 GVS: Gerrit_Virtual_Submit Reviewed-by: Thomas Fleury <tfleury@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/perf/vfe_equ.c')
-rw-r--r--drivers/gpu/nvgpu/perf/vfe_equ.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/gpu/nvgpu/perf/vfe_equ.c b/drivers/gpu/nvgpu/perf/vfe_equ.c
index 6630fb21..78a7c57c 100644
--- a/drivers/gpu/nvgpu/perf/vfe_equ.c
+++ b/drivers/gpu/nvgpu/perf/vfe_equ.c
@@ -150,14 +150,16 @@ static u32 devinit_get_vfe_equ_table(struct gk20a *g,
150 150
151 gk20a_dbg_info(""); 151 gk20a_dbg_info("");
152 152
153 if (g->ops.bios.get_perf_table_ptrs) { 153 if (!g->ops.bios.get_perf_table_ptrs)
154 vfeequs_tbl_ptr = (u8 *)g->ops.bios.get_perf_table_ptrs(g, 154 return -EINVAL;
155 g->bios.perf_token, 155
156 CONTINUOUS_VIRTUAL_BINNING_TABLE); 156 vfeequs_tbl_ptr = (u8 *)g->ops.bios.get_perf_table_ptrs(g,
157 if (vfeequs_tbl_ptr == NULL) { 157 g->bios.perf_token,
158 status = -EINVAL; 158 CONTINUOUS_VIRTUAL_BINNING_TABLE);
159 goto done; 159
160 } 160 if (vfeequs_tbl_ptr == NULL) {
161 status = -EINVAL;
162 goto done;
161 } 163 }
162 164
163 memcpy(&vfeequs_tbl_header, vfeequs_tbl_ptr, 165 memcpy(&vfeequs_tbl_header, vfeequs_tbl_ptr,