BusyBox Bug and Patch Tracking
BusyBox
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0000661 [BusyBox] Other major always 01-26-06 10:23 02-03-06 18:17
Reporter gavinl View Status public  
Assigned To BusyBox
Priority normal Resolution fixed  
Status closed   Product Version
Summary 0000661: 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.
Additional Information
Attached Files  busybox-1.1.0-mdev.patch [^] (3,341 bytes) 01-26-06 10:23

- Relationships

- Notes
(0001014)
gavinl
01-27-06 06:03

In Description 3, it should be "in searching /sys directory"
 
(0001018)
landley
01-29-06 01:18

0000001 fixed.
2: why isn't this a uClibc bug?
0000003: This is related to 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/ [^]
 
(0001019)
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...
 
(0001028)
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
 
(0001029)
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.
 
(0001030)
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)
 
(0001031)
landley
02-03-06 12:36

I referenced the Linux Weekly News article for a reason. The layout of /sys is changing and I want to see what it changes to in order to make the mdev changes.

The patch to actually make the userspace change was submitted Jan 27, and LWN linked to it as http://lwn.net/Articles/169754/ [^]

I also have email from Greg Kroah-Hartman with the relevant scanning section from the current udev cvs, which I need to analyze this weekend and see what the smallest way to make it work is. Tomorrow is saturday, I get to poke at this for a bit...
 
(0001032)
vapier
02-03-06 18:17

ok, ive fixed getdents in uClibc svn to properly export the d_type field ... that should cover everything here
 

- 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
02-03-06 12:36 landley Note Added: 0001031
02-03-06 18:17 vapier Note Added: 0001032
02-03-06 18:17 vapier Status assigned => closed
02-03-06 18:17 vapier Resolution open => fixed


Copyright © 2000 - 2006 Mantis Group
Powered by Mantis Bugtracker