diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 7dc683d3a78e..91e357b56d90 100755 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4936,10 +4936,8 @@ unsigned int sched_lib_mask_force; bool is_sched_lib_based_app(pid_t pid) { const char *name = NULL; - char *libname, *lib_list; struct vm_area_struct *vma; char path_buf[LIB_PATH_LENGTH]; - char *tmp_lib_name; bool found = false; struct task_struct *p; struct mm_struct *mm; @@ -4947,16 +4945,11 @@ bool is_sched_lib_based_app(pid_t pid) if (strnlen(sched_lib_name, LIB_PATH_LENGTH) == 0) return false; - tmp_lib_name = kmalloc(LIB_PATH_LENGTH, GFP_KERNEL); - if (!tmp_lib_name) - return false; - rcu_read_lock(); p = find_process_by_pid(pid); if (!p) { rcu_read_unlock(); - kfree(tmp_lib_name); return false; } @@ -4976,15 +4969,10 @@ bool is_sched_lib_based_app(pid_t pid) if (IS_ERR(name)) goto release_sem; - strlcpy(tmp_lib_name, sched_lib_name, LIB_PATH_LENGTH); - lib_list = tmp_lib_name; - while ((libname = strsep(&lib_list, ","))) { - libname = skip_spaces(libname); - if (strnstr(name, libname, + if (strnstr(name, sched_lib_name, strnlen(name, LIB_PATH_LENGTH))) { - found = true; - goto release_sem; - } + found = true; + break; } } } @@ -4994,7 +4982,6 @@ release_sem: mmput(mm); put_task_struct: put_task_struct(p); - kfree(tmp_lib_name); return found; }