Kay Sievers [Mon, 13 Jul 2009 01:09:05 +0000 (03:09 +0200)]
udevd: handle SIGCHLD before the worker event message
We may need to handle SIGCHLD before the queued worker message. The last
reference, from the SIGCHLD or the worker message will clean up the worker
context. In case we receive an unexpected SIGCHLD with an error, we let
the event fail and clean up the worker context.
Kay Sievers [Sat, 11 Jul 2009 16:21:26 +0000 (18:21 +0200)]
udevd: make sure a worker finishes event handling before exiting
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.
Kay Sievers [Wed, 8 Jul 2009 12:13:20 +0000 (14:13 +0200)]
udevd: detach event from worker if we kill a worker
Jul 8 09:36:41 udevd[663]: worker [5491] did not accept message, kill it
Jul 8 09:36:41 udevd[663]: worker [5491] unexpectedly returned with 0
Jul 8 09:36:41 udevd[663]: worker [5551] unexpectedly returned with 0
Jul 8 09:36:41 kernel: [ 156.832086] <6>udevd[663]: segfault at 4 ip 00959fbc sp bfbe7b78 error 6 in udevd[94f000+1c000]
Ian Campbell [Mon, 6 Jul 2009 13:54:52 +0000 (14:54 +0100)]
scsi_id: correct error handling in prepend_vendor_model
The callers of prepend_vendor_model both expect < 0 to be returned on
error and the index to be returned otherwise. However
prepend_vendor_model actually returns 1 on error. Fix this by correctly
returning -1.
Older kernels (before e5b3cd42: "SCSI: sanitize INQUIRY strings")
truncated the model field in sysfs (or propagated bad results from the
target) to less than the expected/required 16 characters which meant
that the SCSI id was mangled into:
# /sbin/scsi_id -g -s /block/sdg
S146cee20VIRTUAL-DISK
when it should have been:
# /sbin/scsi_id -g -s /block/sdg
SIET VIRTUAL-DISK 146cee20
Notice how the serial number has been pasted over the vendor+model at
index 1 instead of being added at the end.
In the former case:
# cat /sys/devices/platform/host5/session1/target5:0:0/5:0:0:1/model | od -t c -t x1 0000000 V I R T U A L - D I S K \n
56 49 52 54 55 41 4c 2d 44 49 53 4b 0a
But it should have been:
# cat /sys/devices/platform/host5/session1/target5:0:0/5:0:0:1/model | od -t c -t x1 0000000 V I R T U A L - D I S K
56 49 52 54 55 41 4c 2d 44 49 53 4b 20 20 20 20 0000020 \n
0a
Kay Sievers [Sun, 5 Jul 2009 21:56:24 +0000 (23:56 +0200)]
build: add *exec* to the internal rootlibdir name
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
Jon Masters [Thu, 2 Jul 2009 00:21:03 +0000 (20:21 -0400)]
firmware: search for third party or sysadmin supplied firmware updates
We currently search /lib/firmware and /lib/firmware/`uname -r` for firmware
files for device drivers loaded by the currently running kernel. These are
often packaged by distributions as a subpackage of the kernel or as a
separate package containing firmware. But these files cannot easily be
updated by third parties or sysadmins independently of that package.
This patch causes udev to also look for firmware files in an "updates"
directory, which is almost identical in purpose to the module-init-tools
"updates" directories insomuch as local changes can go in here and will
take preference over firmware supplied by any distribution.
Stefan Richter [Wed, 1 Jul 2009 19:41:43 +0000 (21:41 +0200)]
rules: set group ownership of new firewire driver device files
The newer firewire-core driver exposes per-device character device files,
called /dev/fw[0-9]*, in contrast to the older raw1394, video1394, dv1394
drivers which created one global file or per-controller files.
This allows to set ownership, permissions, or/ and access control lists
for each device file based on device type markers obtained from sysfs.
The "units" attribute which is used for this purpose has become available
in Linux 2.6.31(-rc1) by commit 0210b66dd88a2a1e451901b00378a2068b6ccb35.
The added rules match identifiers of
- IIDC devices:
industrial cameras and some webcams,
- AV/C devices:
camcorders, set-top boxes, TV sets, audio devices, and similar
devices.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Kay Sievers [Sun, 28 Jun 2009 00:59:48 +0000 (02:59 +0200)]
rules: make ata_id properties the default for all ATA block devices
We need to call ata_id as the default for libata sd* devices. We
want ID_BUS=ata, and the ATA device proeprties, and be independent
of the SCSI emulation with the truncated values. The links
in /dev/disk/by-id/{ata-*,scsi-*} are still the same.
Martin Pitt [Fri, 26 Jun 2009 06:17:23 +0000 (08:17 +0200)]
hid2hci: narrow matches to real HCI devices
The previous rules just checked bInterfaceProtocol but not the actual device
and interface class. This caused the hci rules to be applied for Dell USB hubs
and attached input devices like keyboards and mouses as well, breaking them
completely.
Tighten the match to also check device and interface class/subclass.
Kay Sievers [Wed, 17 Jun 2009 19:57:40 +0000 (21:57 +0200)]
extras: delete man pages for private udev tools
These are mostly dummy man pages, without real content, some even
outdated. None of these tools are part of any offered public interface,
and they should not pretend to be by offering a man page.