Hi, On 23/05/17 20:52, Peter Zijlstra wrote: > On Tue, May 23, 2017 at 09:53:46AM +0100, Juri Lelli wrote: > > diff --git a/include/uapi/linux/sched.h b/include/uapi/linux/sched.h > > index e2a6c7b3510b..72723859ef74 100644 > > --- a/include/uapi/linux/sched.h > > +++ b/include/uapi/linux/sched.h > > @@ -48,5 +48,6 @@ > > */ > > #define SCHED_FLAG_RESET_ON_FORK 0x01 > > #define SCHED_FLAG_RECLAIM 0x02 > > +#define SCHED_FLAG_SPECIAL 0x04 > > > > #endif /* _UAPI_LINUX_SCHED_H */ > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > > index 7fc2011c3ce7..ba57e2ef9aef 100644 > > > @@ -4205,7 +4212,9 @@ static int __sched_setscheduler(struct task_struct *p, > > } > > > > if (attr->sched_flags & > > - ~(SCHED_FLAG_RESET_ON_FORK | SCHED_FLAG_RECLAIM)) > > + ~(SCHED_FLAG_RESET_ON_FORK | > > + SCHED_FLAG_RECLAIM | > > + SCHED_FLAG_SPECIAL)) > > return -EINVAL; > > > > /* > > Could we pretty please not expose this gruesome hack to userspace? > > So if you stick it in attr->sched_flags, use a high bit and don't put it > in a uapi header. Also make the flags check explicitly fail on it when > @user. Such that only _nocheck() (and thus kernel) callers have access > to it. >
Sure, I should have done it in the first place. > Also, there's not nearly enough warnings and other derisory comments > near it. Eheh, I'll add all the derisory remarks I'm capable of. :/ Thanks, - Juri

