summaryrefslogtreecommitdiff
path: root/libudev
AgeCommit message (Collapse)Author
2009-10-30udevd: queue-export - remove retry loopAlan Jenkins
These retry loops are required where create_path() could race with delete_path(). But only the main udevd process writes to the queue, so no races will happen here. Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2009-10-30use CLOEXEC flags instead of fcntl()Kay Sievers
2009-10-28break loops if util_create_path() returns errorKay Sievers
Dangling symlinks in path components return -ENOENT. Do not retry to create the file in a loop in such case.
2009-10-20libudev: allow to store negative values in the udev databasePeter Rajnoha
2009-09-22util_run_program: *really* restore signal mask before executing event RUN ↵Scott James Remnant
commands The previous patch was almost, but not quite, correct. Rather than restoring the signal mask it actually tried to make an even more restrictive signal mask (had SIGALRM been blocked when udevd started, anyway). Fix it harder. Signed-off-by: Scott James Remnant <scott@ubuntu.com>
2009-09-10put util_create_path() and file creastion in a retry loopKay Sievers
On 8/29/09, Florian Zumbiehl <florz@florz.de> wrote: > Could it happen that > util_create_path() and util_delete_path() > do run in parallel for > the same directory? After all, util_create_path() > does handle > the case where creation of the directory happens in parallel > to it running, so it doesn't seem all that unlikely to me ...
2009-09-10reorder create_path() and node/link creation to be called in a direct sequenceKay Sievers
2009-09-09simplify "symlink name stack"Kay Sievers
With well defined and kernel-supplied node names, we no longer need to support a possible stack of conflicting symlinks and node names. Only symlinks with identical names can be claimed by multiple devices. This shrinks the former /dev/.udev/names/ significantly. Also the /dev/{block,char}/MAJ:MIN" links are excluded from the name stack - they are unique and can not conflict.
2009-09-08fix randonm findings from llvm-clang-analyzerKay Sievers
Thanks to Lennart for the log file!
2009-09-08util_run_program(): fix possible buffer overflow #2Florian Zumbiehl
I'm not sure how likely it is for UTIL_PATH_SIZE to have an odd value (maybe it has right now? :-), but I guess making this universally correct doesn't hurt ...
2009-09-07util_run_program(): skip multiple spaces in argv creationKay Sievers
2009-09-07util_run_program: restore signal mask before executing event RUN commandsJeremy Kerr
External programs triggered by events (via RUN=) will inherit udev's signal mask, which is set to block all but SIGALRM. For most utilities, this is OK, but if we start daemons from RUN=, we run into trouble (especially as SIGCHLD is blocked). This change saves the original sigmask when udev starts, and restores it just before we exec() the external command. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
2009-09-07udev_queue_get_seqnum_sequence_is_finished(): fix possible file handle leakFlorian Zumbiehl
2009-09-01udev_util_encode_string(): fix possible buffer overflowFlorian Zumbiehl
2009-09-01libudev-util.c: get_sys_link() - return error for empty link targetKay Sievers
2009-09-01util_resolve_sys_link(): fix possible buffer overflowFlorian Zumbiehl
2009-08-30util_create_path(): fix possible out of bounds array accessFlorian Zumbiehl
2009-08-29util_delete_path(): handle multiple leading slashesFlorian Zumbiehl
2009-08-29util_create_path(): fix errno usageKay Sievers
Based on a patch from: Florian Zumbiehl <florz@florz.de>
2009-08-29util_lookup_group(): fix memory leak if realloc() failsFlorian Zumbiehl
2009-08-29util_delete_path(): use util_strscpy()Florian Zumbiehl
2009-08-29util_unlink_secure(): chmod() before chown()Kay Sievers
Suggested by Florian Zumbiehl <florz@florz.de>.
2009-08-25assign errno for getgrnam_r()/getpwnam_r()Kay Sievers
On Mon, Aug 24, 2009 at 19:50, Lennart Poettering<lennart@poettering.net> wrote: > One little comment here: on POSIX getrnam_r() doesn't touch > errno. Instead it returns the error value as return value.
2009-08-19change database file namesKay Sievers
With very deeply nested devices, We can not use a single file name to carry an entire DEVPATH. Use <subsystem>:<sysname> as the database filename, which should also simplify the handling of devices moving around, as these values will not change but still be unique. For the name stack we use the <maj>:<min> now as the filename. > On Tue, Aug 18, 2009 at 09:59:56AM -0400, Ric Wheeler wrote: > The first is that udev grumbles during boot about "file name too long" > like the following: > > Aug 17 06:49:58 megadeth udevd-event[20447]: unable to create db file > '/dev/.udev/db/\x2fdevices\x2fpci0000:00\x2f0000:00:04.0\x2f0000:17:00.0\x2f0000:18:0a.0\x2f0000:1f:00.0\x2fhost11\x2fport-11:0\x2fexpander-11:0\x2fport-11:0:0\x2fexpander-11:1\x2fport-11:1:0\x2fexpander-11:2\x2fport-11:2:17\x2fexpander-11:3\x2fport-11:3:1\x2fend_device-11:3:1\x2fbsg\x2fend_device-11:3:1': > File name too long
2009-08-18don't compare a non-existing function with NULLDaniel Mierswa
Obviously someone forgot something here or didn't use -ansi. Either way, index is nowhere declared so I assume the current behaviour is to check against the index() function coming from somewhere in the POSIX headers. The comparison doesn't make sense then. Signed-off-by: Daniel Mierswa <impulze@impulze.org>
2009-08-08fix spellingAlan Jenkins
Fix spelling in docbook comments, code comments, and a local variable name. Thanks to "ispell -h" for docbook HTML and "scspell" for source code. Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2009-08-07Fix building of documentation when doing out-of-source builds.Diego Elio 'Flameeyes' Pettenò
Since gtk-mkhtml is executed in a sub-directory of the build directory, and make does not know of that, the $(buildir) variable will still be "." and the $(srcdir) will not properly be found. For this reason, use the absolute variants for the two functions, which won't be changing.
2009-08-07Merge libudev, udev, and the unconditional extras in a single Makefile.am.Diego Elio 'Flameeyes' Pettenò
Instead of using multiple recursive Makefile.am files, use a single Makefile.am that sets and builds all the basic suite of libraries and binaries for udev. This reduces the number of files in the source tree, and also reduces drastically the build time when using parallel-make. With this setup, all the compile steps will be executed in parallel, and just the linking stage will be (partially) serialised on the libraries creation.
2009-08-06libudev: silent gcc warning: may be used uninitialized in this functionKay Sievers
2009-08-01update a few years of copyrightKay Sievers
2009-08-01fix util_lookup_group to handle large groupsEric W. Biederman
I have recently been getting the above message on fc11 and I have traced it down to a bug in util_lookup_group. As of 145 util_lookup_group reads: gid_t util_lookup_group(struct udev *udev, const char *group) { char *endptr; int buflen = sysconf(_SC_GETGR_R_SIZE_MAX); char buf[buflen]; struct group grbuf; struct group *gr; gid_t gid = 0; if (strcmp(group, "root") == 0) return 0; gid = strtoul(group, &endptr, 10); if (endptr[0] == '\0') return gid; errno = 0; getgrnam_r(group, &grbuf, buf, buflen, &gr); if (gr != NULL) return gr->gr_gid; if (errno == 0 || errno == ENOENT || errno == ESRCH) err(udev, "specified group '%s' unknown\n", group); else err(udev, "error resolving group '%s': %m\n", group); return 0; } The errno value from getgrnam_r here is ERANGE which is documented as "Insufficient buffer space supplied". When I call get getgrnam_r with a large enough buffer everything works. Indicating that the problem is that sysconf is returning a value too small. A quick google search tells me that sysconf(_S_GETGR_R_SIZE_MAX) is documented as: > sysconf(_S_GETGR_R_SIZE_MAX) returns either -1 or a good > suggested starting value for buflen. It does not return the > worst case possible for buflen. In my case I have a group with about 50 users in /etc/group and that is what triggered the problem in udev and caused all of the udevs group lookups to fail. The following patch which dynamically allocates the group member buffer should fix this problem. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
2009-07-28enumeration: move ALSA control devices to the end of the enumerated devices ↵Lennart Poettering
of each card Generally ALSA control devices should be the last ones to be processed for ACL changes and similar operations because they can then be used as indicators that ACL management finished for all device nodes of a specific card. This patch simple moves each controlC device behind all the pcmC devices (and similar).
2009-07-25make: build internal tools against libudev-private.laKay Sievers
2009-07-23udevadm: trigger - add --sysname-match=Kay Sievers
$ udevadm trigger -n -v --subsystem-match=usb --sysname-match=2-1.1* /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1 /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.1 /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.1/2-1.1.1:1.0 /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.2 /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.2/2-1.1.2:1.0 /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1.2/2-1.1.2:1.1 /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1.1/2-1.1:1.0
2009-07-17udevd: add timestamp to --debug outputKay Sievers
2009-07-11udevd: make sure a worker finishes event handling before exitingKay Sievers
Persistent network rules write out new rules files. When rules change, we need to kill all workers to update the in-memory copy of the rules. We need to make sure, that a worker finshes its work for all device messages it has accepted, before it exits after a SIGTERM from the main process.
2009-07-08libudev: enumerate - sort with qsort()Kay Sievers
On machines with many thousands of devices: $ time find /sys -name uevent | wc -l 74876 real 0m33.171s user 0m3.329s sys 0m29.719s the current udevtrigger spends minutes sorting the device list: $ time /sbin/udevadm trigger --dry-run real 4m56.739s user 4m45.743s sys 0m7.862s with qsort() it looks better: $ time udev/udevadm trigger --dry-run real 0m6.495s user 0m0.473s sys 0m5.923s
2009-07-08libudev: device - free values before updating themKay Sievers
2009-07-07use MIN() MAX() from param.hKay Sievers
2009-07-05build: add *exec* to the internal rootlibdir nameKay Sievers
Automake like variables with *exec* in the directory names, to decide, that it isn't *data*: http://www.gnu.org/software/hello/manual/automake/The-Two-Parts-of-Install.html#The-Two-Parts-of-Install
2009-07-04libudev: monitor - handle kernel supplied DEVNAME properlyKay Sievers
2009-07-04build: do not delete .la filesKay Sievers
2009-07-02udevadm: test - print list of propertiesKay Sievers
2009-06-28do not exports properties starting with a '.'Kay Sievers
Private variables can be marked like: ENV{.FOO}="bar"
2009-06-22libudev: queue - add comments for queue formatKay Sievers
udev/udev.pc
2009-06-17libudev: install in $libdir and move later to $rootlibdirKay Sievers
That way, libudev.la will not get out of sync with the location of the development so link.
2009-06-17cleanup ./configure installation directory optionsKay Sievers
2009-06-16libudev: doc - libudev-docs.sgml -> libudev-doc.xmlKay Sievers
2009-06-16libudev: doc - add empty libudev.typesKay Sievers
2009-06-16libudev: remove prefix from .so version variablesKay Sievers