Subject: bin/36614: mknod driver to major mapping bug
To: None <gnats-admin@netbsd.org, netbsd-bugs@netbsd.org>
From: None <dieter.NetBSD@pandora.be>
List: netbsd-bugs
Date: 07/07/2007 20:05:00
>Number: 36614
>Category: bin
>Synopsis: mknod driver to major mapping bug
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: bin-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Jul 07 20:05:00 +0000 2007
>Originator: dieter roelants
>Release: NetBSD 4.99.22
>Organization:
>Environment:
System: NetBSD simult.amelgem.be 4.99.22 NetBSD 4.99.22 (SIMULT) #23: Mon Jul 2 19:30:03 CEST 2007 dieter@simult.amelgem.be:/build/obj.i386.current/sys/arch/i386/compile/SIMULT i386
Architecture: i386
Machine: i386
>Description:
mknod can be given the name of a driver instead of a major
number for the creation of device files. However, the major
used is always that of the character device of the driver.
>How-To-Repeat:
simult:p0:/dev/tmp# mknod -l | grep '^sd '
sd character major 13 block major 4
simult:p0:/dev/tmp# mknod rsd0a c sd 0
simult:p0:/dev/tmp# mknod sd0a b sd 0
simult:p0:/dev/tmp# ls -l *
crw-r--r-- 1 root wheel 13, 0 Jul 7 21:50 rsd0a
brw-r--r-- 1 root wheel 13, 0 Jul 7 21:50 sd0a
>Fix:
Index: mknod.c
===================================================================
RCS file: /cvsroot/src/sbin/mknod/mknod.c,v
retrieving revision 1.35
diff -u -r1.35 mknod.c
--- mknod.c 1 Oct 2005 20:24:44 -0000 1.35
+++ mknod.c 7 Jul 2007 19:38:55 -0000
@@ -391,7 +391,7 @@
for (i = 0; i < num_drivers; kd++, i++) {
if (strcmp(name, kd->d_name))
continue;
- if (mode & S_IFCHR)
+ if (S_ISCHR(mode))
return kd->d_cmajor;
return kd->d_bmajor;
}