Loading kernel/sched/core.c +10 −3 Original line number Diff line number Diff line Loading @@ -5039,6 +5039,7 @@ unsigned int sched_lib_mask_force; bool is_sched_lib_based_app(pid_t pid) { const char *name = NULL; char *lib_list, *libname; struct vm_area_struct *vma; char path_buf[LIB_PATH_LENGTH]; bool found = false; Loading @@ -5048,11 +5049,14 @@ bool is_sched_lib_based_app(pid_t pid) if (strnlen(sched_lib_name, LIB_PATH_LENGTH) == 0) return false; lib_list = kstrdup(sched_lib_name, GFP_KERNEL); rcu_read_lock(); p = find_process_by_pid(pid); if (!p) { rcu_read_unlock(); kfree(lib_list); return false; } Loading @@ -5072,19 +5076,22 @@ bool is_sched_lib_based_app(pid_t pid) if (IS_ERR(name)) goto release_sem; if (strnstr(name, sched_lib_name, while ((libname = strsep(&lib_list, ","))) { if (strnstr(name, libname, strnlen(name, LIB_PATH_LENGTH))) { found = true; break; } } } } release_sem: up_read(&mm->mmap_sem); mmput(mm); put_task_struct: put_task_struct(p); kfree(lib_list); return found; } Loading Loading
kernel/sched/core.c +10 −3 Original line number Diff line number Diff line Loading @@ -5039,6 +5039,7 @@ unsigned int sched_lib_mask_force; bool is_sched_lib_based_app(pid_t pid) { const char *name = NULL; char *lib_list, *libname; struct vm_area_struct *vma; char path_buf[LIB_PATH_LENGTH]; bool found = false; Loading @@ -5048,11 +5049,14 @@ bool is_sched_lib_based_app(pid_t pid) if (strnlen(sched_lib_name, LIB_PATH_LENGTH) == 0) return false; lib_list = kstrdup(sched_lib_name, GFP_KERNEL); rcu_read_lock(); p = find_process_by_pid(pid); if (!p) { rcu_read_unlock(); kfree(lib_list); return false; } Loading @@ -5072,19 +5076,22 @@ bool is_sched_lib_based_app(pid_t pid) if (IS_ERR(name)) goto release_sem; if (strnstr(name, sched_lib_name, while ((libname = strsep(&lib_list, ","))) { if (strnstr(name, libname, strnlen(name, LIB_PATH_LENGTH))) { found = true; break; } } } } release_sem: up_read(&mm->mmap_sem); mmput(mm); put_task_struct: put_task_struct(p); kfree(lib_list); return found; } Loading