lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 26 Feb 2020 09:14:25 +0530 From: Pavan Kondeti <pkondeti@...eaurora.org> To: Parth Shah <parth@...ux.ibm.com> Cc: linux-kernel@...r.kernel.org, peterz@...radead.org, mingo@...hat.com, vincent.guittot@...aro.org, dietmar.eggemann@....com, qais.yousef@....com, chris.hyser@...cle.com, patrick.bellasi@...bug.net, valentin.schneider@....com, David.Laight@...LAB.COM, pjt@...gle.com, pavel@....cz, tj@...nel.org, dhaval.giani@...cle.com, qperret@...gle.com, tim.c.chen@...ux.intel.com Subject: Re: [PATCH v4 3/4] sched: Allow sched_{get,set}attr to change latency_nice of the task On Tue, Feb 25, 2020 at 08:33:53PM +0530, Parth Shah wrote: > > > On 2/25/20 12:24 PM, Pavan Kondeti wrote: > > On Mon, Feb 24, 2020 at 02:29:17PM +0530, Parth Shah wrote: > > > > [...] > > > >> diff --git a/kernel/sched/core.c b/kernel/sched/core.c > >> index 65b6c00d6dac..e1dc536d4ca3 100644 > >> --- a/kernel/sched/core.c > >> +++ b/kernel/sched/core.c > >> @@ -4723,6 +4723,8 @@ static void __setscheduler_params(struct task_struct *p, > >> p->rt_priority = attr->sched_priority; > >> p->normal_prio = normal_prio(p); > >> set_load_weight(p, true); > >> + > >> + p->latency_nice = attr->sched_latency_nice; > >> } > > > > We don't want this when SCHED_FLAG_LATENCY_NICE is not set in > > attr->flags. > > > > The user may pass SCHED_FLAG_KEEP_PARAMS | SCHED_FLAG_LATENCY_NICE to > > change only latency nice value. So we have to update latency_nice > > outside __setscheduler_params(), I think. > > > AFAICT, passing SCHED_FLAG_KEEP_PARAMS with any other flag will prevent us > from changing the latency_nice value because of the below code flow: > > __sched_setscheduler() > __setscheduler() > if (attr->sched_flags & SCHED_FLAG_KEEP_PARAMS) return; > __setscheduler_params() > I thought the user space could set SCHED_FLAG_KEEP_ALL | SCHED_FLAG_LATENCY_NICE and be able to modify the nice value alone. This does not work since we skip setting the latency nice value when SCHED_FLAG_KEEP_PARAMS is set. So to change the nice value alone, we first have to do getattr() and modify the nice value and pass it to setattr(). It is not a big deal. so I will leave it here. > whereas, one thing we still can do is add if condition when setting the > value, i.e., > > @@ -4724,7 +4724,8 @@ static void __setscheduler_params(struct task_struct *p, > p->normal_prio = normal_prio(p); > set_load_weight(p, true); > > - p->latency_nice = attr->sched_latency_nice; > + if (attr->sched_flags & SCHED_FLAG_LATENCY_NICE) > + p->latency_nice = attr->sched_latency_nice; > } > Yes, without this, we accidently override latency value when other attributes are modified. Thanks, Pavan -- Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.
Powered by blists - more mailing lists