libudev: do not set DEVNAME= twice

When we read the 'uevent' file we need to make sure, that we do not
read the relative DEVNAME= path provided by the kernel and overwrite
the absolute path udev expects here.
This commit is contained in:
Kay Sievers 2012-01-21 06:00:17 +01:00
parent 430959910f
commit d2b795f2b9
3 changed files with 30 additions and 7 deletions

View file

@ -77,7 +77,7 @@ SED_PROCESS = \
# libudev
# ------------------------------------------------------------------------------
LIBUDEV_CURRENT=13
LIBUDEV_REVISION=0
LIBUDEV_REVISION=1
LIBUDEV_AGE=13
SUBDIRS += src/docs

16
NEWS
View file

@ -1,3 +1,19 @@
udev 178
========
Bugfix for the firmware loading behavior with kernel modules which
try to load firmware in the module_init() path. The blocked event
runs into a timout now, which should allow the firmware to be loaded.
Bugfix for a wrong DEVNAME= export, which breaks at least the udev-acl
tool.
Bugfix for missing ID_ properties for GPT partitions.
The RUN+="socket:.." option is deprecated and should not be used. A warning
during rules parsing is printed now. Services which listen to udev events,
need to subscribe to the netlink messages with libudev and not let udev block
in the rules execution until the message is delivered.
udev 177
========
Bugfix for rule_generator instalation.

View file

@ -548,16 +548,23 @@ int udev_device_read_uevent_file(struct udev_device *udev_device)
continue;
pos[0] = '\0';
if (strncmp(line, "DEVTYPE=", 8) == 0)
if (strncmp(line, "DEVTYPE=", 8) == 0) {
udev_device_set_devtype(udev_device, &line[8]);
else if (strncmp(line, "MAJOR=", 6) == 0)
continue;
}
if (strncmp(line, "IFINDEX=", 8) == 0) {
udev_device_set_ifindex(udev_device, strtoull(&line[8], NULL, 10));
continue;
}
if (strncmp(line, "DEVNAME=", 8) == 0) {
udev_device_set_devnode(udev_device, &line[8]);
continue;
}
if (strncmp(line, "MAJOR=", 6) == 0)
maj = strtoull(&line[6], NULL, 10);
else if (strncmp(line, "MINOR=", 6) == 0)
min = strtoull(&line[6], NULL, 10);
else if (strncmp(line, "IFINDEX=", 8) == 0)
udev_device_set_ifindex(udev_device, strtoull(&line[8], NULL, 10));
else if (strncmp(line, "DEVNAME=", 8) == 0)
udev_device_set_devnode(udev_device, &line[8]);
else if (strncmp(line, "DEVMODE=", 8) == 0)
udev_device->devnode_mode = strtoul(&line[8], NULL, 8);