summaryrefslogtreecommitdiff
path: root/udev
AgeCommit message (Collapse)Author
2008-11-21include errno.h in sysdeps.hGabor Z. Papp
2008-11-20libudev: accept NULL whitelist in util_replace_chars()Kay Sievers
2008-11-17fix $links substitution for devices without any linkKay Sievers
Reported-by: Michel Hermier <michel.hermier@gmail.com>
2008-11-17udevd: fix cleanup of /dev/.udev/uevent_seqnumKay Sievers
2008-11-17limit $attr(<symlink>) magic to well-known links onlyKay Sievers
2008-11-15udevadm: fix option parsing breakage with klibcSergey Vlasov
The klibc implementation of getopt_long() behaves slightly different from the glibc one - in particular, it treats the change of the option string argument between invocations as start of parsing a different command line, and resets its state. However, the udevadm code expected getopt_long() invocations in subcommands to continue parsing the rest of command line after initial options has been parsed at the top level; with klibc this broke, causing all udevadm subcommands to stop recognizing their options. Instead of relying on the glibc behavior, reset the getopt_long() state properly before invoking the subcommand handler: move argv to point to the subcommand name, decrease argc appropriately, and set optind = 0. This also fixes a minor bug visible with glibc - without setting optind = 0 all getopt_long() calls in subcommand handlers were behaving as if "+" was specified as the first character of the option string (which disables option reordering), because that state was set by the first getopt_long() call at the top level, and was not reset when parsing subcommand options. Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
2008-11-14libudev: device - handle disk "device" link for partitions in deprecated ↵Kay Sievers
sysfs layout Thanks to Mikhail Kolesnik <mike@openbunker.org> for finding this.
2008-11-13remove len == 0 check, the index root is always '\0'Kay Sievers
2008-11-13udevadm: info - unify -V and --versionKay Sievers
2008-11-13set errno = ENOSYS in inotify stubKay Sievers
2008-11-13merge trie nodes, childs and root into a single arrayKay Sievers
2008-11-12reserve child slot 0Kay Sievers
2008-11-12string index - split nodes and childs to allow and unlimited number of childsKay Sievers
2008-11-11silence "comparison between signed and unsigned"Kay Sievers
2008-11-11udevd: de-duplicate strings in rulesAlan Jenkins
On my Ubuntu installation this removes 15k of duplicate strings, using a temporary index of about 25k. Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2008-11-07convert debug string arrays to functionsKay Sievers
On Fri, Nov 7, 2008 at 13:07, Matthias Schwarzott <zzam@gentoo.org> wrote: > I managed to let udev-131 segfault at startup. > > I configured it like this: > CFLAGS="-Wall -ggdb" ./configure --prefix=/usr --sysconfdir=/etc --exec-prefix= > > Running it in gdb shows it segfaults at udev-rules.c:831 > > (gdb) run > Starting program: /tmp/udev-131/udev/udevd > > Program received signal SIGSEGV, Segmentation fault. > 0x0804ea06 in get_key (udev=0x9175008, line=0xafcdc8f0, key=0xafcdc5d8, > op=0xafcdc5d0, value=0xafcdc5d4) > at udev-rules.c:831 > 831 dbg(udev, "%s '%s'-'%s'\n", operation_str[*op], *key, *value); If compiled without optimization, the dbg() macro dereferences variables which are not available. Convert the string array to a function, which just returns NULL if compiled without DEBUG.
2008-11-07fix size_t compiler warning on 32 bit platformsKay Sievers
2008-11-06udevadm: settle - exit if udevd exitsKay Sievers
2008-11-06cleanup /dev/.udev/queue on startup and exitKay Sievers
2008-11-06fix indentationKay Sievers
2008-11-05udevd: shrink struct token to 12 bytesAlan Jenkins
2008-11-05$links should be relativeKay Sievers
2008-11-05unify string replacementKay Sievers
2008-11-05do not import the "uevent" file when we only read the db to get old symlinksKay Sievers
2008-11-05fix cleanup of possible left-over symlinksKay Sievers
2008-11-05fix $links substitutionKay Sievers
2008-11-05info() PROGRAM and IMPORT executionKay Sievers
2008-11-04fix list handling in enumerate and rules file sortingKay Sievers
2008-11-01move debugging strings inside #ifdef DEBUGKay Sievers
2008-11-01move some info() to dbg()Kay Sievers
2008-11-01fix udev_node_update_old_links() logicKay Sievers
No need to check if links that still belong to us, need to be updated.
2008-11-01skip entire rule containing device naming keys, if no device can be namedKay Sievers
If rules set NAME, SYMLINK, OWNER, GROUP, MODE, events without a device node and remove events will skip the entire rule. The old parser did the same.
2008-11-01log rules file and line number when NAME, SYMLINK, OWNER, GROUP, MODE, RUN ↵Kay Sievers
is applied
2008-11-01udevd: be more careful when matching against parentsAlan Jenkins
I'm worried about what will happen with things like KERNELS=="*" # pointless rule KERNELS=="doesnt-match" # another pointless rule Since TK_RULE < TK_M_PARENTS_MAX, we will try to match all three tokens against parents of the current device. I can't think of a bad case, but it's not exactly good either. Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2008-11-01udevd: fix termination of rule executionAlan Jenkins
LAST_RULE was broken, and I broke TK_END by making it do the same. It used a "break" which exited the switch statement, but not the loop! ==2953== Invalid read of size 4 ==2953== at 0x4081EE: dump_token (udev-rules.c:859) ==2953== by 0x40BADB: udev_rules_apply_to_event (udev-rules.c:1849) ==2953== by 0x403F17: udev_event_execute_rules (udev-event.c:554) ==2953== by 0x418626: main (test-udev.c:100) ==2953== Address 0x55ab1f8 is 0 bytes after a block of size 80 alloc'd ==2953== at 0x4C23082: realloc (vg_replace_malloc.c:429) ==2953== by 0x40B13B: udev_rules_new (udev-rules.c:1670) ==2953== by 0x418536: main (test-udev.c:84) ... Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2008-10-31write trace log to stderrKay Sievers
2008-10-29ATTR{}== always fails if the attribute does not existKay Sievers
2008-10-29udevd: merge exec and run queue to minimize devpath string comparesKay Sievers
2008-10-28udevd: simplify rules execution loopAlan Jenkins
cur can't become NULL, and the check for TK_END can be folded into the switch statement. Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2008-10-26kerneldoc comment fixesAlan Jenkins
s/ressources/resources/ Also reduce commas per sentence and add a possessive apostrophe.
2008-10-26libudev: device - allocate envp array only onceKay Sievers
2008-10-26test: add RUN+="socket: ..." to a test to run monitor codeKay Sievers
2008-10-26libudev: device - fill envp array while composing monitor bufferKay Sievers
Thanks to Alan Jenkins, for the idea.
2008-10-26fix $attr{[<subsystem>/<sysname>]<attribute>} substitutionKay Sievers
2008-10-26do not init string arrays, just clear first byteKay Sievers
2008-10-26match_attr() - copy attr value only when neededKay Sievers
2008-10-26udevd: avoid implicit memset in match_attr()Alan Jenkins
Initializing a char array to "" is equivalent to a memset() call - which is exactly what it gets compiled to. Fixing this one callsite reduced memset() _user_ cpu cycles from 2-4% to 0.05% on the EeePC. Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2008-10-25udevd: use a tighter loop for compare_devpath()Alan Jenkins
This crops up in my threaded udevd profiles from time to time. It's not consistent - probably due to variations in the number of concurrent events - but it can hit 4% user time and higher. The change halves the user time spent in compare_devpath(). Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2008-10-25fix handling of string_escape optionAlan Jenkins
2008-10-25match KEY="A|B" without temporary string copyKay Sievers