diff options
author | danh-arm <dan.handley@arm.com> | 2016-04-25 14:52:14 +0100 |
---|---|---|
committer | danh-arm <dan.handley@arm.com> | 2016-04-25 14:52:14 +0100 |
commit | cf4ee1779a47777a96eba0e111f287e127877ae4 (patch) | |
tree | 87be46745eba4d24da3b85026f4434acb6bbb64e | |
parent | 3f84cec51cedd58e80e36d67bab34016976a60c0 (diff) | |
parent | 22b09c1721ca25a93918e2f2b76ffcb5c5e13f1e (diff) |
Merge pull request #604 from sandrine-bailleux-arm/sb/validate-psci_cpu_on_start-args
Validate psci_cpu_on_start() arguments
-rw-r--r-- | services/std_svc/psci/psci_main.c | 7 | ||||
-rw-r--r-- | services/std_svc/psci/psci_on.c | 7 | ||||
-rw-r--r-- | services/std_svc/psci/psci_private.h | 3 |
3 files changed, 7 insertions, 10 deletions
diff --git a/services/std_svc/psci/psci_main.c b/services/std_svc/psci/psci_main.c index e6cd3a3a..68ad5f63 100644 --- a/services/std_svc/psci/psci_main.c +++ b/services/std_svc/psci/psci_main.c @@ -47,7 +47,6 @@ int psci_cpu_on(u_register_t target_cpu, { int rc; - unsigned int end_pwrlvl; entry_point_info_t ep; /* Determine if the cpu exists of not */ @@ -64,11 +63,7 @@ int psci_cpu_on(u_register_t target_cpu, * To turn this cpu on, specify which power * levels need to be turned on */ - end_pwrlvl = PLAT_MAX_PWR_LVL; - rc = psci_cpu_on_start(target_cpu, - &ep, - end_pwrlvl); - return rc; + return psci_cpu_on_start(target_cpu, &ep); } unsigned int psci_version(void) diff --git a/services/std_svc/psci/psci_on.c b/services/std_svc/psci/psci_on.c index 200e6222..c8c36cd0 100644 --- a/services/std_svc/psci/psci_on.c +++ b/services/std_svc/psci/psci_on.c @@ -67,13 +67,16 @@ static int cpu_on_validate_state(aff_info_state_t aff_state) * platform handler as it can return error. ******************************************************************************/ int psci_cpu_on_start(u_register_t target_cpu, - entry_point_info_t *ep, - unsigned int end_pwrlvl) + entry_point_info_t *ep) { int rc; unsigned int target_idx = plat_core_pos_by_mpidr(target_cpu); aff_info_state_t target_aff_state; + /* Calling function must supply valid input arguments */ + assert((int) target_idx >= 0); + assert(ep != NULL); + /* * This function must only be called on platforms where the * CPU_ON platform hooks have been implemented. diff --git a/services/std_svc/psci/psci_private.h b/services/std_svc/psci/psci_private.h index 4b91ad53..8a671b39 100644 --- a/services/std_svc/psci/psci_private.h +++ b/services/std_svc/psci/psci_private.h @@ -203,8 +203,7 @@ int psci_spd_migrate_info(u_register_t *mpidr); /* Private exported functions from psci_on.c */ int psci_cpu_on_start(unsigned long target_cpu, - entry_point_info_t *ep, - unsigned int end_pwrlvl); + entry_point_info_t *ep); void psci_cpu_on_finish(unsigned int cpu_idx, psci_power_state_t *state_info); |