|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|