I was playing with bind9 and got the typical:

    On FreeBSD systems, the server logs error messages like "fcntl(8,
    F_SETFL, 4): Inappropriate ioctl for device". This is due to
    a bug in the FreeSBD /dev/random device. The bug has been
    reported to the FreeBSD maintainers. Versions of OpenBSD prior
    to 2.8 have a similar problem.

I took a look at what OpenBSD did and it looks like they just
no-op'd out the ioctl:

http://www.openbsd.org/cgi-bin/cvsweb/src/sys/dev/rnd.c?r1=1.40&r2=1.41

I have a patch that seems to shut bind up, but I'm not 100% sure
this is the right fix, as it looks like it just fakes the nonblocking
access to the random devices.

Here's my patch (I can probably generate this for alpha):

Index: mem.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/i386/mem.c,v
retrieving revision 1.79.2.4
diff -u -u -r1.79.2.4 mem.c
--- mem.c       2000/08/04 22:31:07     1.79.2.4
+++ mem.c       2000/11/13 23:53:43
@@ -57,6 +57,7 @@
 #include <sys/proc.h>
 #include <sys/random.h>
 #include <sys/signalvar.h>
+#include <sys/filio.h>
 #include <sys/uio.h>
 
 #include <machine/frame.h>
@@ -465,8 +466,20 @@
         * selecting and inspecting which interrupts are used in the muck
         * gathering business.
         */
-       if (cmd != MEM_SETIRQ && cmd != MEM_CLEARIRQ && cmd != MEM_RETURNIRQ)
+       switch (cmd) {
+       case FIOASYNC:
+               /* rnd has no async flag in softc so this is really a no-op. */
+               /* FALLTHROUGH */
+       case FIONBIO:
+               /* Handled in the upper FS layer. */
+               return (0);
+       case MEM_SETIRQ:
+       case MEM_CLEARIRQ:
+       case MEM_RETURNIRQ:
+               break;
+       default:
                return (ENOTTY);
+       }
 
        /*
         * Even inspecting the state is privileged, since it gives a hint

Did I miss part of the OpenBSD delta?  This looks too easy. :(

-- 
-Alfred Perlstein - [[EMAIL PROTECTED]|[EMAIL PROTECTED]]
"I have the heart of a child; I keep it in a jar on my desk."


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

Reply via email to