From 4f50c90f6e872cdce86fb165b171dcfa60211896 Mon Sep 17 00:00:00 2001 From: Masamichi Takagi Date: Fri, 3 Apr 2020 13:06:11 +0900 Subject: [PATCH] __mcctrl_os_read_write_cpu_register: Range-check cpu number Change-Id: I9ef991e1f0a7e301430586c261bf55bf73a4bae9 --- executer/kernel/mcctrl/control.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/executer/kernel/mcctrl/control.c b/executer/kernel/mcctrl/control.c index 1ebb2597..949217b3 100644 --- a/executer/kernel/mcctrl/control.c +++ b/executer/kernel/mcctrl/control.c @@ -3491,10 +3491,25 @@ int __mcctrl_os_read_write_cpu_register(ihk_os_t os, int cpu, struct ihk_os_cpu_register *desc, enum mcctrl_os_cpu_operation op) { + struct mcctrl_usrdata *udp = ihk_host_os_get_usrdata(os); struct ikc_scd_packet isp; struct mcctrl_os_cpu_response resp; int ret = -EINVAL; + if (!udp) { + pr_err("%s: error: mcctrl_usrdata not found\n", __func__); + ret = -EINVAL; + goto out; + } + + if (cpu < 0 || cpu >= udp->cpu_info->n_cpus) { + pr_err("%s: error: cpu (%d) is out of range\n", + __func__, cpu); + ret = -EINVAL; + goto out; + + } + memset(&isp, '\0', sizeof(struct ikc_scd_packet)); isp.msg = SCD_MSG_CPU_RW_REG; isp.op = op;