Commit Graph

10404 Commits

Author SHA1 Message Date
Joe Lawrence
3d6ead6908 scsi_id: fix usage spelling
s/threat/treat/g

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-11-02 14:39:33 -05:00
Colin Walters
daaa2f764b libudev: Use correct free function
FILE * wants cleanup_fclose().

Spotted by udev hwdb segfaulting in gnome-continuous' buildroot
construction.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-11-02 14:38:03 -05:00
Anthony G. Basile
0ba3128e90 man: update man pages
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-11-02 14:36:05 -05:00
Zbigniew Jędrzejewski-Szmek
ad9c47a35b Use log "level" instead of "priority"
The term "priority" is misleading because higher levels have lower
priority. "Level" is clearer and shorter.

This commit touches only the textual descriptions, not function and variable
names themselves. "Priority" is used in various command-line switches and
protocol constants, so completly getting rid of "priority" is hard.

I also left "priority" in various places where the clarity suffered
when it was removed.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-11-02 14:27:23 -05:00
Zbigniew Jędrzejewski-Szmek
66498b0110 libudev: do not accept invalid log levels
Invalid log levels lead to a assert failure later on.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-11-02 14:22:32 -05:00
Zbigniew Jędrzejewski-Szmek
27756785c2 libudev: modernization
This brings udev logging style a bit closer to normal systemd convention.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-11-02 14:17:16 -05:00
Marcel Holtmann
73769714f5 hwdb: Update database of Bluetooth company identifiers
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-11-01 13:33:18 -04:00
Anthony G. Basile
887305880a man/make.sh: die if /usr/bin/xsltproc is not found
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-11-01 13:22:24 -04:00
Anthony G. Basile
2886f6c9e5 man: change systemd-udev to udev everywhere
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 21:25:43 -04:00
Anthony G. Basile
96fe7e83d4 man: ship pre-build man pages
This addresses https://github.com/gentoo/eudev/issues/98

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 20:12:39 -04:00
Anthony G. Basile
8b1eb9c754 src/shared/sparse-endian.h: cosmetic change
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 17:56:11 -04:00
Anthony G. Basile
a1941af5ee src/udev/udev-node.c: fix selinux label
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 17:43:39 -04:00
Anthony G. Basile
77e2c6addb rules/50-firmware.rules: remove firmware rules
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 16:45:12 -04:00
Michal Schmidt
03221aa40a hashmap: rewrite the implementation
We reintroduce hashmap.{h,c}, list.h and set.h verbatim from upstream,
before we punt dead code.  The following is the upstream message:

This is a rewrite of the hashmap implementation. Its advantage is lower
memory usage.

It uses open addressing (entries are stored in an array, as opposed to
linked lists). Hash collisions are resolved with linear probing and
Robin Hood displacement policy. See the references in hashmap.c.

Some fun empirical findings about hashmap usage in systemd on my laptop:
  - 98 % of allocated hashmaps are Sets.
  - Sets contain 78 % of all entries, plain Hashmaps 17 %, and
    OrderedHashmaps 5 %.
  - 60 % of allocated hashmaps contain only 1 entry.
  - 90 % of allocated hashmaps contain 5 or fewer entries.
  - 75 % of all entries are in hashmaps that use trivial_hash_ops.

Clearly it makes sense to:
  - store entries in distinct entry types. Especially for Sets - their
    entries are the most numerous and they require the least information
    to store an entry.
  - have a way to store small numbers of entries directly in the hashmap
    structs, and only allocate the usual entry arrays when the direct
    storage is full.

The implementation has an optional debugging feature (enabled by
defining the ENABLE_HASHMAP_DEBUG macro), where it:
  - tracks all allocated hashmaps in a linked list so that one can
    easily find them in gdb,
  - tracks which function/line allocated a given hashmap, and
  - checks for invalid mixing of hashmap iteration and modification.

Since entries are not allocated one-by-one anymore, mempools are not
used for entries. Originally I meant to drop mempools entirely, but it's
still worth it to use them for the hashmap structs. My testing indicates
that it makes loading of units about 5 % faster (a test with 10000 units
where more than 200000 hashmaps are allocated - pure malloc: 449±4 ms,
mempools: 427±7 ms).

Here are some memory usage numbers, taken on my laptop with a more or
less normal Fedora setup after booting with SELinux disabled (SELinux
increases systemd's memory usage significantly):

systemd (PID 1)                            Original   New    Change
dirty memory (from pmap -x 1) [KiB]            2152  1264     -41 %
total heap allocations (from gdb-heap) [KiB]   1623   756     -53 %

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 13:28:12 -04:00
Michal Schmidt
11c32d3baa mempool: add a zeroing alloc function
Add mempool_alloc0_tile(). It's like mempool_alloc_tile(), but it
initializes the allocated tile's memory to zero.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 12:05:27 -04:00
Lennart Poettering
eaa45759c7 util: don't block on getrandom()
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 12:02:25 -04:00
Dave Reisner
d21fc3fc8e missing.h: fix wrong __NR_getrandom syscall def
278 is vmsplice on x86_64. 318 is what we want:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/syscalls/syscall_64.tbl

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 12:01:37 -04:00
Lennart Poettering
ea79c9cdf0 util: make use of the new getrandom() syscall if it is available when needing entropy
Doesn't require an fd, and could be a bit faster, so let's make use of
it, if it is available.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 11:58:25 -04:00
Hans de Goede
fb45281a7a keymap: Ignore brightness keys on Dell Inspiron 1520 to avoid double events
On the Dell Inspiron 1520 both the atkbd and acpi-video input devices report
an event for pressing the brightness up / down key-combos, resulting in user
space seeing double events and increasing / decreasing the brightness 2 steps
for each keypress.

This hwdb snippet suppresses the atkbd events, making the Inspiron 1520 work
like most modern laptops which emit brightness up / down events through
acpi-video only.

Reported by Pavel Malyshev <p.malishev@gmail.com>

https://bugzilla.redhat.com/show_bug.cgi?id=1141525

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-31 06:29:53 -04:00
Anthony G. Basile
014ba30c45 man/udev.xml: update man page
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-30 21:55:57 -04:00
Lennart Poettering
c306f4eab6 util: unify how we see srand()
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-30 21:34:49 -04:00
Kay Sievers
25268b958a udev: path_id - update comments
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-30 21:28:38 -04:00
Anthony G. Basile
d3e4cb5ccb configure.ac: bump 2.1.1 = upstream 217
Release for bug fix on musl.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-29 16:20:14 -04:00
Anthony G. Basile
9c1f5b012a src/shared/selinux-util.h: add missing include <fcntl.h>
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-28 21:38:42 -04:00
Anthony G. Basile
acbf3091de configure.ac: bump 2.1 = upstream 217
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-28 20:53:04 -04:00
Zbigniew Jędrzejewski-Szmek
86392f7d55 cdrom_id: do not attempt to read past end of buffer
CID #1238437

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-28 20:48:28 -04:00
Kay Sievers
905473a866 udev: path_id - set supported_parent for well-known SCSI setups
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-28 20:46:46 -04:00
Anthony G. Basile
6a4169c6f7 Skip "udev hwdb: Support shipping pre-compiled database"
We skip upstream commit

    33488f19793dc0a86fdee27266c5319b5b78d695

because it breaks from our standard for where we put the hwdb.bin.
We may have to revisit this issue in the future.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-28 20:44:14 -04:00
Anthony G. Basile
915508d0d3 src/shared/mkdir-label.c: move and rename mkdir_label()
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-26 12:38:38 -04:00
Anthony G. Basile
1040c8000f src/shared/label.c: move and rename symlink_label()
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-26 12:08:16 -04:00
Anthony G. Basile
0b786cdba2 src/shared/virt.c: add docker to container namespace
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-26 12:05:08 -04:00
Anthony G. Basile
1279a751a0 src/shared/selinux-util.c: add path_is_absolute() check
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-26 11:39:40 -04:00
Lennart Poettering
abf869c416 label: move is_dir() to util.c
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-26 11:26:35 -04:00
Anthony G. Basile
5f5839857c src/udev/udevd.c: rename apis again in static_dev_create_from_modules()
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 19:07:36 -04:00
Lennart Poettering
c73ca2c9bd label: don't try to create labelled directories more than once
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:54:30 -04:00
Lennart Poettering
a7a23d465d selinux: clean up selinux label function naming
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:53:50 -04:00
Lennart Poettering
9efbf32a55 selinux: simplify and unify logging
Normally we shouldn#t log from "library" functions, but SELinux is
weird, hence upgrade security messages uniformly to LOG_ERR when in
enforcing mode.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:38:11 -04:00
Lennart Poettering
328f4fa311 selinux: rework label query APIs
APIs that query and return something cannot silently fail, they must
either return something useful, or an error. Fix that.

Also, properly rollback socket unit fd creation when something goes
wrong with the security framework.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:37:18 -04:00
Lennart Poettering
619049a4a9 smack: we don't need the special labels exported, hence don't
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:36:25 -04:00
Lennart Poettering
d6492c6bb3 selinux: drop 3 unused function prototypes
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:35:28 -04:00
Lennart Poettering
7ede461236 smack: rework SMACK label fixing code to follow more closely the semantics of the matching selinux code
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:34:28 -04:00
Lennart Poettering
c649be35f1 smack: never follow symlinks when relabelling
previously mac_smack_apply(path, NULL) would operate on the symlink
itself while mac_smack_apply(path, "foo") would follow the symlink.
Let's clean this up an always operate on the symlink, which appears to
be the safer option.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:33:38 -04:00
Lennart Poettering
65e7a7fcba smack: rework smack APIs a bit
a) always return negative errno error codes
b) always become a noop if smack is off
c) always take a NULL label as a request to remove it

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:32:53 -04:00
Lennart Poettering
00772eaeba mac: rename all calls that apply a label mac_{selinux|smack}_apply_xyz(), and all that reset it to defaults mac_{selinux|smack}_fix()
Let's clean up the naming schemes a bit and use the same one for SMACK
and for SELINUX.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:31:53 -04:00
Lennart Poettering
575644587b selinux: make use of cleanup gcc magic
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:30:37 -04:00
Michal Schmidt
4531818f12 hashmap: introduce hashmap_reserve()
With the current hashmap implementation that uses chaining, placing a
reservation can serve two purposes:
 - To optimize putting of entries if the number of entries to put is
   known. The reservation allocates buckets, so later resizing can be
   avoided.
 - To avoid having very long bucket chains after using
   hashmap_move(_one).

In an alternative hashmap implementation it will serve an additional
purpose:
 - To guarantee a subsequent hashmap_move(_one) will not fail with
   -ENOMEM (this never happens in the current implementation).

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 18:18:26 -04:00
Michal Schmidt
ac2d134b8c hashmap: return more information from resize_buckets()
Return 0 if no resize was needed, 1 if successfully resized and
negative on error.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 14:36:13 -04:00
Michal Schmidt
3d43ac3b56 shared: split mempool implementation from hashmaps
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 14:28:31 -04:00
Lennart Poettering
53f0b01f22 time: don't do comparison twice
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 14:12:42 -04:00
Lennart Poettering
d9c4f21a13 mac: also rename use_{smack,selinux,apparmor}() calls so that they share the new mac_{smack,selinux,apparmor}_xyz() convention
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
2014-10-25 14:03:47 -04:00