__sched_setscheduler: don't do any policy checks when not "user"

The "user" parameter to __sched_setscheduler indicates whether the
change is being done on behalf of a user process or not.  If not, we
shouldn't apply any permissions checks, so don't call
security_task_setscheduler().

Signed-off-by: Jeremy Fitzhardinge <[email protected]>
Tested-by: Steve Wise <[email protected]>
Cc: Rusty Russell <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
Jeremy Fitzhardinge 2008-08-03 09:33:03 -07:00 • committed by Linus Torvalds
commit 725aad24c3

View file

@ -5004,19 +5004,21 @@ recheck:
return -EPERM;
}
if (user) {
#ifdef CONFIG_RT_GROUP_SCHED
/*
* Do not allow realtime tasks into groups that have no runtime
* assigned.
*/
if (user
&& rt_policy(policy) && task_group(p)->rt_bandwidth.rt_runtime == 0)
return -EPERM;
/*
* Do not allow realtime tasks into groups that have no runtime
* assigned.
*/
if (rt_policy(policy) && task_group(p)->rt_bandwidth.rt_runtime == 0)
return -EPERM;
#endif
retval = security_task_setscheduler(p, policy, param);
if (retval)
return retval;
retval = security_task_setscheduler(p, policy, param);
if (retval)
return retval;
}
/*
* make sure no PI-waiters arrive (or leave) while we are
* changing the priority of the task: