kern/99251: can't create symlink named like an existing device on devfs

Christian Recktenwald chris at lf.net
Wed Jun 21 13:50:18 UTC 2006


>Number:         99251
>Category:       kern
>Synopsis:       can't create symlink named like an existing device on devfs
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jun 21 13:50:16 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Christian Recktenwald
>Release:        5.5p2
>Organization:
>Environment:
FreeBSD my.host 5.5-RELEASE-p2 FreeBSD 5.5-RELEASE-p2 #0: Mon  i386 i386 Pentium III/Pentium III Xeon/Celeron FreeBSD
>Description:
Task:
  set symlink /dev/mem -> /dev/null

Action:
  cd /dev
  ln -sf null mem

Test:
  ls -l *mem

Result:
  ls: mem: No such file or directory
  crw-r-----  1 root kmem 244, 1 Jun 20 19:35 kmem

Debugging (after reboot):
 cd /dev 

 ls -l *mem
 crw-r-----  1 root kmem 244, 1 Jun 20 19:35 kmem 
 crw-r-----  1 root kmem 244, 0 Jun 20 19:35 mem

 rm mem

 ls -l *mem
 crw-r-----  1 root kmem 244, 1 Jun 20 19:35 kmem

 ln -s null mem
   or
 perl -e 'symlink "null","mem" or die "$!"'

 ls -l *mem
 ls: mem: No such file or directory
 crw-r-----  1 root kmem 244, 1 Jun 20 19:35 kmem
 
 echo *mem
 kmem mem

so: sh's globbing finds a directory entry "mem", but there is no
    stat(2)-able inode 

also interesting: each time I try 
 ln -s null mem
there is one more "mem"-entry 
 echo *mem
 kmem mem mem
 ln -s null mem
 echo *mem
 kmem mem mem mem

sometime like
 ln -s a b 
works as experted
>How-To-Repeat:
mkdir /tmp/x
mount -t devfs devfs /tmp/x
cd /tmp/x
ls -l *mem
rm mem
ls -l *mem
ln -s null mem
ls -l *mem
echo *mem
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list