1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-23 21:35:11 +03:00
Commit Graph

3228 Commits

Author SHA1 Message Date
Kay Sievers
f7c5b04f69 re-enable failed event tracking
It did not work for the last couple of releases.

If RUN{record_failed}+="..." is given, a non-zero execution will mark
the event as failed. Recorded failed events can be re-triggered with:
  udevadm trigger --type=failed

The failed tracking _might_ be useful for things which might not be
ready to be executed at early bootup, but a bit later when the needed
dependencies are available. In many cases though, it indicates that
something is used in a way it should not.
2009-08-06 16:16:26 +02:00
Kay Sievers
6e4025dfc8 make: suppress enter/leaving directory messages 2009-08-06 15:51:47 +02:00
Kay Sievers
43c42ca454 libudev: silent gcc warning: may be used uninitialized in this function 2009-08-06 15:37:55 +02:00
Anssi Hannula
2a0c6867cb udev-acl: add joystick devices
User needs read-write access to joystick devices in order to use force
feedback features.
2009-08-05 05:08:45 +02:00
Anssi Hannula
d256454415 rules: exclude digitizers from joystick class
Exclude digitizers and similar devices from ID_CLASS joystick by
checking modalias for BTN_DIGI.

This was also done for linux kernel joydev interface in linux commit
d07a9cba6be5c0e947afc1014b5a62182a86f1f1.
2009-08-05 05:07:15 +02:00
Kay Sievers
fc206fbe3e update a few years of copyright 2009-08-01 09:39:18 -04:00
Eric W. Biederman
504a553e78 fix util_lookup_group to handle large groups
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-08-01 09:23:50 -04:00
Lennart Poettering
3bf768245b enumeration: move ALSA control devices to the end of the enumerated devices 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-28 03:10:05 +02:00
Kay Sievers
2a827c959a make: build internal tools against libudev-private.la 2009-07-25 20:37:45 +02:00
Kay Sievers
4b6769f612 hid2hci: rewrite (and break) rules and device handling
We must never access random devices in /dev which do not belong to
the event we are handling. Hard-coding /dev/hidrawX, and looping over all
devices is absolutely not acceptable --> hook into hidraw events.

We can not relay on (rather random) properties merged into the parent
device by earlier rules --> use libudev to find the sibling device
with a matching interface.

Libusb does not fit into udev's use case. We never want want to scan
and open() all usb devices in the system, just to find the device
we are already handling the event for --> put all the stupid scanning
into a single function and prepare for a fixed libusb or drop it later.
2009-07-24 18:06:22 +02:00
Kay Sievers
d5b5a611ae format names are not case insensitive 2009-07-23 20:30:52 +02:00
Kay Sievers
58230a77d3 path_id: fix typo in comment 2009-07-23 20:30:52 +02:00
Kay Sievers
8f2f1b1262 rules: serial - fix path_id call 2009-07-23 20:30:52 +02:00
Martin Pitt
0dcf1ce1f7 extras/keymap: Fix crash for unknown keys
The keymap table has some holes in it, which caused the interactive mode to
crash for unknown keys. In these cases, print the numeric key code instead.
2009-07-23 19:00:38 +02:00
Erik Forsberg
53842b5382 extras/modem-modeswitch: Add Huawei E1550 GSM modem
What's odd is that this is a huawei modem, not an option modem, so one would
expect it to work better with usb_modeswitch and it's -H (huawei) mode - but
that's not the case, I've tested that as well.

https://launchpad.net/bugs/401655
2009-07-23 16:40:25 +02:00
Kay Sievers
cf5bd04073 udevadm: trigger - add --sysname-match=
$ 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-23 00:02:28 +02:00
Kay Sievers
1b691f831b path_id: make global variable static 2009-07-22 19:09:48 +02:00
Kay Sievers
9821e70264 hid2hci: remove hid structures and include kernel header 2009-07-22 01:03:33 +02:00
Mario Limonciello
5bacd2aadc hid2hci: support to hid2hci for recovering Dell BT devices after S3 2009-07-22 00:33:27 +02:00
Kay Sievers
be7fec4815 configure.ac: version bump 2009-07-21 01:40:47 +02:00
Kay Sievers
7a1566b0ee v4l_id: exit with 0 when --help is given 2009-07-21 01:36:42 +02:00
Martin Pitt
9093c7c132 extras/keymap: Add Samsung SX22S
Reported on hal ML by Sergey Astanin <s.astanin@gmail.com>.
2009-07-20 17:59:11 +02:00
Martin Pitt
0b8d9a7333 extras/keymap: teach findkeyboards about USB keyboards 2009-07-18 16:59:46 +02:00
Martin Pitt
6e40a05718 extras/keymap: Add Fujitsu Amilo M
https://launchpad.net/bugs/48547
2009-07-18 15:30:08 +02:00
Martin Pitt
1d11776f27 extras/keymap: cover more Compaq Evo models
https://launchpad.net/bugs/35382 shows that may Evo N* models share the same
keymap, so generalize the existing rule.
2009-07-18 15:23:55 +02:00
Martin Pitt
04c6b22fcd extras/keymap: Add HP Presario 2100
https://launchpad.net/bugs/20223
2009-07-18 15:17:20 +02:00
Martin Pitt
31d55fb187 extras/keymap: add recently added keymap files to Makefile.am 2009-07-18 15:09:05 +02:00
Martin Pitt
04ff303730 extras/keymap: fix check-keymaps.sh for inline mappings
Do not complain about missing keymap files when giving scancode/keyname pairs
on the keymap command line in the rules.
2009-07-18 15:07:55 +02:00
Martin Pitt
9193c7df9a keymap: inline one-line key maps
Remove key map files which have only one override. Instead, use keymap tools'
new feature of specifying scancode/keyname pairs directly at the command line.

Also add a comment to 95-keymap.rules about how to specify key mappings in the
rules.
2009-07-18 15:02:25 +02:00
Martin Pitt
d03a6f20df keymap tool: support scancode/keycode pair arguments
This avoids having to create and parse an entire keymap file for cases where
just one or two keys have to be remapped.
2009-07-18 14:52:45 +02:00
Martin Pitt
b02c9fa19b keymap tool: improve help
Do not duplicate help strings, and add missing calling variant for
interactivity.
2009-07-18 14:27:50 +02:00
Martin Pitt
acdf6ae7ac extras/keymap: add Compal Hel80i
https://launchpad.net/bugs/198530
2009-07-18 14:13:28 +02:00
Martin Pitt
4766e49e3f extras/keymap: add Everex Stepnote XT5000T
Reported in https://launchpad.net/bugs/400921
2009-07-18 09:27:38 +02:00
Kay Sievers
820fc48f24 udevd: add timestamp to --debug output 2009-07-17 13:26:46 +02:00
Martin Pitt
9528405c4a extras/keymap: add Zepto ZNote
Reported on https://launchpad.net/bugs/400252
2009-07-16 17:34:01 +02:00
Martin Pitt
ba17475852 add keymap for Clevo D410J laptop
Reported as hal-info patch by Németh Márton <nm127@freemail.hu> on hal ML.
2009-07-16 11:23:16 +02:00
Kay Sievers
3d66c90fc4 release 145 2009-07-13 12:19:01 +02:00
Kay Sievers
c380472899 udevd: use bool 2009-07-13 03:33:15 +02:00
Kay Sievers
bc113de9a4 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.
2009-07-13 03:09:05 +02:00
Kay Sievers
adda4c682a 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.
2009-07-11 18:21:26 +02:00
Kay Sievers
405c307a72 udevadm: info - add space after R:, A:, W: on database export
<zzam> kay: udevadmin info -e prints all lines with a space after the :, but the W: line
<kay> zzam: yeah, seems so, and the R: and the A:
<zzam> yeah
2009-07-08 17:05:55 +02:00
Kay Sievers
a073cfa844 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]

https://bugs.launchpad.net/ubuntu/+source/udev/+bug/396957
2009-07-08 14:13:20 +02:00
Kay Sievers
871a36bd7e libudev: enumerate - sort with qsort()
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-08 02:04:49 +02:00
Kay Sievers
a71369b0db libudev: device - free values before updating them 2009-07-08 02:02:40 +02:00
Kay Sievers
804ab68550 configure.ac: version bump 2009-07-08 02:02:02 +02:00
Kay Sievers
257bb4cdac use MIN() MAX() from param.h 2009-07-07 19:30:19 +02:00
Kay Sievers
e4c02c1ca6 README: add CONFIG_BLK_DEV_BSG 2009-07-07 09:48:23 +02:00
Ian Campbell
c3eedf6567 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

Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
2009-07-06 16:21:08 +02:00
Kay Sievers
739ce84bfa release 144 2009-07-06 00:52:56 +02:00
Kay Sievers
182c9b1584 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
2009-07-05 23:56:24 +02:00