[Bug 285408] linux: jid 1 pid 88998 (server): sysctl {1,40,6} is not implemented

[email protected]
Newsgroups gmane.os.freebsd.devel.emulation
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285408

--- Comment #6 from Jason Mader <[email protected]> ---
Found that the message may come from libressl crypto/compat/getentropy_linux.c

#ifdef SYS__sysctl
        /*
         * Try to use sysctl CTL_KERN, KERN_RANDOM, RANDOM_UUID.
         * sysctl is a failsafe API, so it guarantees a result.  This
         * should work inside a chroot, or when file descriptors are
         * exhausted.
         *
         * However this can fail if the Linux kernel removes support
         * for sysctl.  Starting in 2007, there have been efforts to
         * deprecate the sysctl API/ABI, and push callers towards use
         * of the chroot-unavailable fd-using /proc mechanism --
         * essentially the same problems as /dev/urandom.
         *
         * Numerous setbacks have been encountered in their deprecation
         * schedule, so as of June 2014 the kernel ABI still exists on
         * most Linux architectures. The sysctl() stub in libc is missing
         * on some systems.  There are also reports that some kernels
         * spew messages to the console.
         */
        ret = getentropy_sysctl(buf, len);
        if (ret != -1)
                return (ret);
#endif /* SYS__sysctl */

#ifdef SYS__sysctl
static int
getentropy_sysctl(void *buf, size_t len)
{
        static int mib[] = { CTL_KERN, KERN_RANDOM, RANDOM_UUID };
        size_t i;
        int save_errno = errno;

        for (i = 0; i < len; ) {
                size_t chunk = MINIMUM(len - i, 16);

                /* SYS__sysctl because some systems already removed sysctl() */
                struct __sysctl_args args = {
                        .name = mib,
                        .nlen = 3,
                        .oldval = (char *)buf + i,
                        .oldlenp = &chunk,
                };
                if (syscall(SYS__sysctl, &args) != 0)
                        goto sysctlfailed;
                i += chunk;
        }
        errno = save_errno;
        return (0);                     /* satisfied */
sysctlfailed:
        errno = EIO;
        return (-1);
}
#endif /* SYS__sysctl */

-- 
You are receiving this mail because:
You are the assignee for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.