> baron% ls -l /dev/sdC0/../../../../../
> d-r-xr-xr-x S 0 dennis dennis 0 Jun 16 19:13 /sdC0
> d-r-xr-xr-x S 0 dennis dennis 0 Jun 16 19:13 /sdE0
> d-r-xr-xr-x S 0 dennis dennis 0 Jun 16 19:13 /sdF0
> --rw-r----- S 0 dennis dennis 0 Jun 16 19:13 /sdctl
> --rw-r----- S 0 dennis dennis 0 Jun 16 19:13 /sdstat
> baron% cd /dev/sdC0
> baron% cd ../../../../
> baron% lc
> sdC0    sdE0    sdF0    sdctl   sdstat
> baron%

This is exactly the kind of bug I expect Steve has committed:

ethel% ls -qd '#S'
(0000000000000001 0 80) '#S'
ethel% ls -qd '#S/sdC0'
(0000000004300004 0 80) '#S/sdC0'
ethel% ls -qd '#S/sdC0/..'
(fffffffffffff001 0 80) '#S'
ethel% 

Notice that the qid for the root doesn't match the qid
that dotdot gives, so the mount driver doesn't realize
that #S/sdC0/.. is the same path as #S/ (according to
the qids, it isn't!).

There is a fixed devsd.c on sources.

Russ

Reply via email to