[BusyBox 0000661]: mdev doesn't work with uClibc-0.9.28
bugs at busybox.net
bugs at busybox.net
Fri Feb 3 18:49:58 UTC 2006
A NOTE has been added to this issue.
======================================================================
http://busybox.net/bugs/view.php?id=661
======================================================================
Reported By: gavinl
Assigned To: BusyBox
======================================================================
Project: BusyBox
Issue ID: 661
Category: Other
Reproducibility: always
Severity: major
Priority: normal
Status: assigned
======================================================================
Date Submitted: 01-26-2006 10:23 PST
Last Modified: 02-03-2006 10:49 PST
======================================================================
Summary: mdev doesn't work with uClibc-0.9.28
Description:
1. if read() file return less than 1, we should close the fd and then goto
end.
2. In uClibc-0.9.28, the entry->d_type is always DT_UNKNOWN, so we can't
use d_type to check if it is a directory.
3. We need to omit "device" and "bridge" in searchin /proc directory, they
are links, and will cause endless loop.
Patch based on busybox-1.1.0 and a snapshot is attached.
======================================================================
----------------------------------------------------------------------
gavinl - 01-27-06 06:03
----------------------------------------------------------------------
In Description 3, it should be "in searching /sys directory"
----------------------------------------------------------------------
landley - 01-29-06 01:18
----------------------------------------------------------------------
http://busybox.net/bugs/view.php?id=1 fixed.
http://busybox.net/bugs/view.php?id=2: why isn't this a uClibc bug?
http://busybox.net/bugs/view.php?id=3: This is related to
http://busybox.net/bugs/view.php?id=2: we're only recursing into directories,
not into
symlinks. This problem only happens when we can't tell the difference,
because the C library is broken.
Now proposed changes to /sys break this by turning everything into
symlinks, but udev keeps breaking so I suppose they feel they must break
mdev to maintain parity. :) But hardwiring in knowledge about the names
of specific branches it's dangerous do go down is _exteremely_ ugly...
http://lwn.net/Articles/162242/
----------------------------------------------------------------------
landley - 01-29-06 01:19
----------------------------------------------------------------------
Wow, this bug generator just manifested yet another unwanted feature,
following a # with a number turns into a link to a bug. If I wanted to
link to a bug I'd use html markup in my comment...
----------------------------------------------------------------------
vapier - 02-02-06 16:17
----------------------------------------------------------------------
seems you forgot to commit the fix for (1) ... ive added that myself now
as for (2), i'll look into this for uClibc
----------------------------------------------------------------------
gavinl - 02-03-06 10:41
----------------------------------------------------------------------
Base on the man 3 readdir, I don't think 2 if a bug of uClibc. Use of
d_type field will harm the portability of your programs. ( Fix me if
I am wrong. I did man 3 readdir in Fedora 3 )
DESCRIPTION
The readdir() function returns a pointer to a dirent structure
repre-
senting the next directory entry in the directory stream pointed to
by
dir. It returns NULL on reaching the end-of-file or if an
error
occurred.
According to POSIX, the dirent structure contains a field char
d_name[]
of unspecified size, with at most NAME_MAX characters preceding
the
terminating null character. Use of other fields will harm the
porta-
bility of your programs. POSIX 1003.1-2001 also documents the
field
ino_t d_ino as an XSI extension.
The data returned by readdir() may be overwritten by subsequent
calls
to readdir() for the same directory stream.
----------------------------------------------------------------------
vapier - 02-03-06 10:49
----------------------------------------------------------------------
i saw that as well but i dont think we need to worry about it ... reasons
being:
- mdev only works on Linux and requires linux-2.6.0 or better (/sys)
- the kernel has been exporting d_type information since before
linux-2.6.0 for all Linux ports
also, if we assume d_type works, the code is much smaller than the version
you wrote (even though your version will always work regardless of kernel)
Issue History
Date Modified Username Field Change
======================================================================
01-26-06 10:23 gavinl New Issue
01-26-06 10:23 gavinl Status new => assigned
01-26-06 10:23 gavinl Assigned To => BusyBox
01-26-06 10:23 gavinl File Added: busybox-1.1.0-mdev.patch
01-27-06 06:03 gavinl Note Added: 0001014
01-29-06 01:18 landley Note Added: 0001018
01-29-06 01:19 landley Note Added: 0001019
02-02-06 16:17 vapier Note Added: 0001028
02-03-06 10:41 gavinl Note Added: 0001029
02-03-06 10:49 vapier Note Added: 0001030
======================================================================
More information about the busybox-cvs
mailing list