From a21fe9c3d8b49aa0faeefe88bf53408249d0d2ee Mon Sep 17 00:00:00 2001 From: Lingutla Chandrasekhar Date: Thu, 13 Feb 2020 11:38:47 +0530 Subject: [PATCH] sched: Improve the scheduler This change is for general scheduler improvements. Change-Id: I780f52ebc3cb69ee2c497d2d2f8e8fddd789421d Signed-off-by: Lingutla Chandrasekhar --- kernel/sched/core.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index b3378fcbc66b..2c20bd870fb3 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5627,6 +5627,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; @@ -5636,11 +5637,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; } @@ -5660,10 +5664,12 @@ 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; + found = true; + break; + } } } } @@ -5673,6 +5679,7 @@ release_sem: mmput(mm); put_task_struct: put_task_struct(p); + kfree(lib_list); return found; }