From: Ingo Molnar <mingo@elte.hu>
To: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Cc: Bharata B Rao <bharata@linux.vnet.ibm.com>,
linux-kernel@vger.kernel.org,
Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [PATCH] sched: Don't allow priority switch to realtime when the task doesn't belong to init_task_group and when CONFIG_RT_GROUP_SCHED isn't set
Date: Thu, 20 Nov 2008 09:17:32 +0100 [thread overview]
Message-ID: <20081120081732.GE21785@elte.hu> (raw)
In-Reply-To: <20081120080344.GA11023@linux.vnet.ibm.com>
* Dhaval Giani <dhaval@linux.vnet.ibm.com> wrote:
> On Thu, Nov 20, 2008 at 08:58:29AM +0100, Ingo Molnar wrote:
> >
> > * Bharata B Rao <bharata@linux.vnet.ibm.com> wrote:
> >
> > > Applies on 2.6.28-rc5.
> > >
> > > With CONFIG_RT_GROUP_SCHED not set, don't allow a task's priority
> > > switch to realtime if the task isn't part of init_task_group.
> > >
> > > A task belonging to a fair group could use
> > > sched_setscheduler/sched_setparam to become a realtime task. If such
> > > a task belongs to one of the child groups of init_task_group and if
> > > CONFIG_RT_GROUP_SCHED is not set, then it ends up getting queued in
> > > init_task_group's runqueue. So we have a situation where, a task
> > > belongs to one group (child) but ends in the runqueue of another
> > > group (init_task_group). This does not look correct.
> > >
> > > Fix this by failing such priority change requests in
> > > sched_setscheduler() and sched_setparam().
> > >
> > > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> > > ---
> > > kernel/sched.c | 7 +++++++
> > > 1 file changed, 7 insertions(+)
> > >
> > > --- a/kernel/sched.c
> > > +++ b/kernel/sched.c
> > > @@ -5206,6 +5206,13 @@ recheck:
> > > if (rt_bandwidth_enabled() && rt_policy(policy) &&
> > > task_group(p)->rt_bandwidth.rt_runtime == 0)
> > > return -EPERM;
> > > +#elif defined(CONFIG_FAIR_GROUP_SCHED)
> > > + /*
> > > + * If the task doesn't belong to init_task_group, don't
> > > + * allow priority switch to realtime. (!CONFIG_RT_GROUP_SCHED)
> > > + */
> > > + if (rt_policy(policy) && (task_group(p) != &init_task_group))
> > > + return -EPERM;
> > > #endif
> > >
> > > retval = security_task_setscheduler(p, policy, param);
> >
> > hm, another option would be, instead of denying something (which
> > denial might not even be noticed by the app) that the app clearly has
> > enough privilege to request - to just act upon it and move the task to
> > the init_task_group?
> >
> > the app cannot expect fair scheduling for this task anyway. And if we
> > want to forbid tasks from doing so - do not give them privilege to go
> > to RT priorities.
> >
>
> I am wondering what would the right action then be if the task drops
> back to CFS.
yeah. If the integration artifacts around the edges get too awkward,
then the best would be to consolidate fair-group and rt-group into the
same group-sched config option and _eliminate_ such artifacts at their
root. rt-group was started as a separate option mostly because it was
new and experimental code - that splitup is not cast into stone.
Ingo
next prev parent reply other threads:[~2008-11-20 8:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-20 6:18 [PATCH] sched: Don't allow priority switch to realtime when the task doesn't belong to init_task_group and when CONFIG_RT_GROUP_SCHED isn't set Bharata B Rao
2008-11-20 7:58 ` Ingo Molnar
2008-11-20 8:03 ` Dhaval Giani
2008-11-20 8:17 ` Ingo Molnar [this message]
2008-11-20 8:19 ` Bharata B Rao
2008-11-23 1:11 ` Peter Zijlstra
2008-11-24 3:58 ` Bharata B Rao
2008-11-24 8:32 ` Peter Zijlstra
2008-11-24 8:46 ` Dhaval Giani
2008-11-24 9:06 ` Peter Zijlstra
2008-11-24 15:24 ` Chris Friesen
2008-11-24 15:36 ` Peter Zijlstra
2008-11-25 18:51 ` Chris Friesen
2008-11-25 20:17 ` Peter Zijlstra
2008-11-24 17:05 ` Srivatsa Vaddagiri
2008-11-24 18:46 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081120081732.GE21785@elte.hu \
--to=mingo@elte.hu \
--cc=a.p.zijlstra@chello.nl \
--cc=bharata@linux.vnet.ibm.com \
--cc=dhaval@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=vatsa@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.