Loading kernel/sched/core.c +16 −3 Original line number Diff line number Diff line Loading @@ -4917,8 +4917,10 @@ 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; Loading @@ -4926,11 +4928,16 @@ 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; } Loading @@ -4950,10 +4957,15 @@ bool is_sched_lib_based_app(pid_t pid) if (IS_ERR(name)) goto release_sem; if (strnstr(name, sched_lib_name, 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, strnlen(name, LIB_PATH_LENGTH))) { found = true; break; goto release_sem; } } } } Loading @@ -4963,6 +4975,7 @@ bool is_sched_lib_based_app(pid_t pid) mmput(mm); put_task_struct: put_task_struct(p); kfree(tmp_lib_name); return found; } Loading Loading
kernel/sched/core.c +16 −3 Original line number Diff line number Diff line Loading @@ -4917,8 +4917,10 @@ 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; Loading @@ -4926,11 +4928,16 @@ 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; } Loading @@ -4950,10 +4957,15 @@ bool is_sched_lib_based_app(pid_t pid) if (IS_ERR(name)) goto release_sem; if (strnstr(name, sched_lib_name, 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, strnlen(name, LIB_PATH_LENGTH))) { found = true; break; goto release_sem; } } } } Loading @@ -4963,6 +4975,7 @@ bool is_sched_lib_based_app(pid_t pid) mmput(mm); put_task_struct: put_task_struct(p); kfree(tmp_lib_name); return found; } Loading