msm: thermal: Add range checking for cluster_id
The cluster id flag is passed in from the userspace through ioctl interface. Ensure correctness of cluster id to avoid out of bounds array accesses. CRS-fixed: 977508 Change-Id: I778b962d347b90488b983a15087b13e90ad06688 Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
This commit is contained in:
parent
e70b298fa4
commit
f0fc4d5eda
1 changed files with 7 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
|
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 and
|
* it under the terms of the GNU General Public License version 2 and
|
||||||
|
@ -114,6 +114,9 @@ static long msm_thermal_process_freq_table_req(struct msm_thermal_ioctl *query,
|
||||||
uint32_t table_idx, idx = 0, cluster_id = query->clock_freq.cluster_num;
|
uint32_t table_idx, idx = 0, cluster_id = query->clock_freq.cluster_num;
|
||||||
struct clock_plan_arg *clock_freq = &(query->clock_freq);
|
struct clock_plan_arg *clock_freq = &(query->clock_freq);
|
||||||
|
|
||||||
|
if (cluster_id >= num_possible_cpus())
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
if (!freq_table_len[cluster_id]) {
|
if (!freq_table_len[cluster_id]) {
|
||||||
ret = msm_thermal_get_freq_plan_size(cluster_id,
|
ret = msm_thermal_get_freq_plan_size(cluster_id,
|
||||||
&freq_table_len[cluster_id]);
|
&freq_table_len[cluster_id]);
|
||||||
|
@ -200,6 +203,9 @@ static long msm_thermal_process_voltage_table_req(
|
||||||
uint32_t cluster_id = query->voltage.cluster_num;
|
uint32_t cluster_id = query->voltage.cluster_num;
|
||||||
struct voltage_plan_arg *voltage = &(query->voltage);
|
struct voltage_plan_arg *voltage = &(query->voltage);
|
||||||
|
|
||||||
|
if (cluster_id >= num_possible_cpus())
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
if (!voltage_table_ptr[cluster_id]) {
|
if (!voltage_table_ptr[cluster_id]) {
|
||||||
if (!freq_table_len[cluster_id]) {
|
if (!freq_table_len[cluster_id]) {
|
||||||
ret = msm_thermal_get_freq_plan_size(cluster_id,
|
ret = msm_thermal_get_freq_plan_size(cluster_id,
|
||||||
|
|
Loading…
Add table
Reference in a new issue