On 17 February 2011 12:50, Mats Lindberg <mats.w.lindb...@gmail.com> wrote:
> All,
> I have been using a small program /rt) that utilize the sched_setscheduler()
> syscall to set the scheduling policy of a process to SCHED_RR. Been running
> it FBSD 5.x and 6.x. Now when migrating to FBSD 8.1 I get EPERM back at me.
> used to be able to run it like e.g.
>> ./rt -sr -p2 -- prog
>
> which started <prog> in SCHED_RR policy with priority 2.
>
> now in FBSD 8.1 I get EPERM
>
> But If I do
>> rtprio 10 ./rt -sr -p2 -- prog
>
> it I dont get EPERM.
>
> I'm always root when doing this.
>
> My problem is that I have customers that need to run their old 5.x 6.x
> applications 'as is' in 8.1 whithout changing anything.
>

[just thinking aloud]

Perhaps, you might have stumbled upon the change in
sched_setscheduler() restricting permission to superuser:

src/sys/posix4/p1003_1b.c#rev1.24.2.1
MFC revision 1.27.
    Don't allow non-root user to set a scheduler policy.

@@ -195,6 +195,10 @@ int sched_setscheduler(struct thread *td
        struct thread *targettd;
        struct proc *targetp;

+       /* Don't allow non root user to set a scheduler policy */
+       if (suser(td) != 0)
+               return (EPERM);
+
        e = copyin(uap->param, &sched_param, sizeof(sched_param));
        if (e)
                return (e);


-- 
wbr,
pluknet
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to