The following check added into kern_linker.c seems wrong somehow:

        if (securelevel_gt(td->td_ucred, 0) == 0) {
                error = EPERM;
                goto out;

The last thing securelevel_gt does is to perform this check:
        return (active_securelevel > level ? EPERM : 0);
i.e. it returns EPERM is securelevel restriction is violated.

Should above construct be rewritten as follows instead?

        if ((error = securelevel_gt(td->td_ucred, 0)) != 0)
                goto out;

The same bug is present in vfs_mount too.
Alexander Kabaev

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to