From ee8aacaa54bb22b5803fc3fa7a89468b53e5eabc Mon Sep 17 00:00:00 2001 From: Dai Li Date: Wed, 9 Mar 2022 17:55:10 +0800 Subject: [PATCH] fixed 92eca4b from https://gitee.com/rongkunshi/kernel_linux_5.10/pulls/103 sched: Fix some bugs for frame RTG ohos inclusion category: bugfix issue: #I4VYOH CVE: NA -------------------------------- Fix following bugs: 1. frame_time re-equaled 2. get_enable function can't reach its' code in disable scene 3. should allow add normal task for Frame rtgs Signed-off-by: Dai Li --- kernel/sched/rtg/frame_rtg.c | 4 +--- kernel/sched/rtg/rtg.c | 2 -- kernel/sched/rtg/rtg_ctrl.c | 15 +++------------ kernel/sched/rtg/rtg_ctrl.h | 4 ---- 4 files changed, 4 insertions(+), 21 deletions(-) diff --git a/kernel/sched/rtg/frame_rtg.c b/kernel/sched/rtg/frame_rtg.c index 89561c84774e..686705e91cff 100644 --- a/kernel/sched/rtg/frame_rtg.c +++ b/kernel/sched/rtg/frame_rtg.c @@ -182,7 +182,7 @@ int set_frame_rate(struct frame_info *frame_info, int rate) return -EINVAL; frame_info->frame_rate = (unsigned int)rate; - frame_info->frame_time = frame_info->frame_time = div_u64(NSEC_PER_SEC, rate); + frame_info->frame_time = div_u64(NSEC_PER_SEC, rate); frame_info->max_vload_time = div_u64(frame_info->frame_time, NSEC_PER_MSEC) + frame_info->vload_margin; @@ -419,8 +419,6 @@ static int do_set_rtg_sched(struct task_struct *task, bool is_rtg, } err = sched_set_group_id(task, grpid); if (err < 0) { - pr_err("[FRAME_RTG]: %s task:%d set_group_id err:%d\n", - __func__, task->pid, err); if (is_rtg) { policy = SCHED_NORMAL; sp.sched_priority = 0; diff --git a/kernel/sched/rtg/rtg.c b/kernel/sched/rtg/rtg.c index 91e2c6abfa4e..8db694d22f2c 100644 --- a/kernel/sched/rtg/rtg.c +++ b/kernel/sched/rtg/rtg.c @@ -313,8 +313,6 @@ static int __sched_set_group_id(struct task_struct *p, unsigned int group_id) remove_task_from_group(p); } else { #endif - pr_err("%s[%d] switching group from %d to %d failed.\n", - p->comm, p->pid, old_grp->id, group_id); rc = -EINVAL; goto done; #ifdef CONFIG_SCHED_RTG_CGROUP diff --git a/kernel/sched/rtg/rtg_ctrl.c b/kernel/sched/rtg/rtg_ctrl.c index 0e87dc7162c4..923ed654de6c 100644 --- a/kernel/sched/rtg/rtg_ctrl.c +++ b/kernel/sched/rtg/rtg_ctrl.c @@ -15,7 +15,6 @@ #include atomic_t g_rtg_enable = ATOMIC_INIT(0); -atomic_t g_enable_type = ATOMIC_INIT(ALL_ENABLE); // default: all enable static atomic_t g_rt_frame_num = ATOMIC_INIT(0); static int g_frame_max_util = DEFAULT_MAX_UTIL; static int g_max_rt_frames = DEFAULT_MAX_RT_FRAME; @@ -55,11 +54,6 @@ static rtg_ctrl_func g_func_array[RTG_CTRL_MAX_NR] = { static int init_proc_state(const int *config, int len); static void deinit_proc_state(void); -int get_enable_type(void) -{ - return atomic_read(&g_enable_type); -} - static int set_enable_config(char *config_str) { char *p = NULL; @@ -86,8 +80,6 @@ static int set_enable_config(char *config_str) config[RTG_FRAME_MAX_UTIL] = value; else if (!strcmp(tmp, "invalid_interval")) config[RTG_INVALID_INTERVAL] = value; - else if (!strcmp(tmp, "enable_type")) - atomic_set(&g_enable_type, value); else continue; } @@ -242,7 +234,7 @@ static long ctrl_set_enable(int abi, void __user *uarg) static long ctrl_get_enable(int abi, void __user *uarg) { - return get_enable_type(); + return atomic_read(&g_rtg_enable); } static int parse_config(const struct rtg_str_data *rs_data) @@ -713,12 +705,11 @@ static int parse_add_rtg_thread(const struct rtg_grp_data *rs_data) return -INVALID_RTG_ID; } if (frame_info->thread_num + add_num > MAX_TID_NUM) { - pr_err("[SCHED_RTG] frame info thread up to max already.\n"); write_unlock(&frame_info->lock); return -INVALID_RTG_ID; } add_index = frame_info->thread_num; - prio = frame_info->prio; + prio = (proc_info.type == NORMAL_TASK) ? NOT_RT_PRIO : frame_info->prio; for (i = 0; i < add_num; i++) { frame_info->thread[add_index] = update_frame_thread(frame_info, prio, prio, rs_data->tids[i], @@ -902,7 +893,7 @@ static long do_proc_rtg_ioctl(int abi, struct file *file, unsigned int cmd, unsi return -INVALID_MAGIC; } - if ((func_id != SET_ENABLE) && !atomic_read(&g_rtg_enable)) { + if (!atomic_read(&g_rtg_enable) && (func_id != SET_ENABLE) && (func_id != GET_ENABLE)) { pr_err("[SCHED_RTG] CMD_ID %x error: Rtg not enabled yet.\n", cmd); return -RTG_DISABLED; } diff --git a/kernel/sched/rtg/rtg_ctrl.h b/kernel/sched/rtg/rtg_ctrl.h index df8ac420d156..8993700048be 100644 --- a/kernel/sched/rtg/rtg_ctrl.h +++ b/kernel/sched/rtg/rtg_ctrl.h @@ -67,10 +67,6 @@ enum rtg_err_no { INVALID_RTG_ID, NO_RT_FRAME, }; -enum enable_type { - ALL_ENABLE = 1, - ENABLE_MAX -}; struct rtg_grp_data { int rtg_cmd; -- Gitee