From: Bharata B Rao <bharata@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@elte.hu>,
Dhaval Giani <dhaval@linux.vnet.ibm.com>
Subject: [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 11:48:54 +0530 [thread overview]
Message-ID: <20081120061854.GA4349@in.ibm.com> (raw)
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);
Regards,
Bharata.
next reply other threads:[~2008-11-20 6:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-20 6:18 Bharata B Rao [this message]
2008-11-20 7:58 ` [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 Ingo Molnar
2008-11-20 8:03 ` Dhaval Giani
2008-11-20 8:17 ` Ingo Molnar
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=20081120061854.GA4349@in.ibm.com \
--to=bharata@linux.vnet.ibm.com \
--cc=a.p.zijlstra@chello.nl \
--cc=dhaval@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--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.