diff --git a/executer/kernel/mcctrl/control.c b/executer/kernel/mcctrl/control.c index 6b2f603c..de034ca2 100644 --- a/executer/kernel/mcctrl/control.c +++ b/executer/kernel/mcctrl/control.c @@ -3132,7 +3132,7 @@ static long mcexec_uti_attr(ihk_os_t os, struct uti_attr_desc __user *_desc) { struct uti_attr_desc desc; - char *uti_cpu_set_str; + char *uti_cpu_set_str = NULL; struct kuti_attr *kattr; cpumask_t *cpuset = NULL, *env_cpuset = NULL; struct mcctrl_usrdata *ud = ihk_host_os_get_usrdata(os); @@ -3167,18 +3167,20 @@ mcexec_uti_attr(ihk_os_t os, struct uti_attr_desc __user *_desc) goto out; } - if (!(uti_cpu_set_str = kmalloc(desc.uti_cpu_set_len, GFP_KERNEL))) { - pr_err("%s: error: allocating uti_cpu_set_str\n", - __func__); - rc = -ENOMEM; - goto out; - } + if (desc.uti_cpu_set_str) { + if (!(uti_cpu_set_str = kmalloc(desc.uti_cpu_set_len, GFP_KERNEL))) { + pr_err("%s: error: allocating uti_cpu_set_str\n", + __func__); + rc = -ENOMEM; + goto out; + } - if ((rc = copy_from_user(uti_cpu_set_str, desc.uti_cpu_set_str, desc.uti_cpu_set_len))) { - pr_err("%s: error: copy_from_user\n", - __func__); - rc = -EFAULT; - goto out; + if ((rc = copy_from_user(uti_cpu_set_str, desc.uti_cpu_set_str, desc.uti_cpu_set_len))) { + pr_err("%s: error: copy_from_user\n", + __func__); + rc = -EFAULT; + goto out; + } } kattr = phys_to_virt(desc.phys_attr); diff --git a/executer/user/mcexec.c b/executer/user/mcexec.c index 6494afba..aae25353 100644 --- a/executer/user/mcexec.c +++ b/executer/user/mcexec.c @@ -3030,7 +3030,9 @@ static long util_thread(struct thread_data_s *my_thread, desc.phys_attr = pattr; desc.uti_cpu_set_str = getenv("UTI_CPU_SET"); - desc.uti_cpu_set_len = strlen(desc.uti_cpu_set_str) + 1; + if (desc.uti_cpu_set_str) { + desc.uti_cpu_set_len = strlen(desc.uti_cpu_set_str) + 1; + } if ((rc = ioctl(fd, MCEXEC_UP_UTI_ATTR, &desc))) { fprintf(stderr, "%s: error: MCEXEC_UP_UTI_ATTR: %s\n",