]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
7 years agojournalctl: allow --root argument for journal watching 3946/head
Zbigniew Jędrzejewski-Szmek [Fri, 12 Aug 2016 04:34:45 +0000 (00:34 -0400)] 
journalctl: allow --root argument for journal watching

It is useful to look at a (possibly inactive) container or other os tree
with --root=/path/to/container. This is similar to specifying
--directory=/path/to/container/var/log/journal --directory=/path/to/container/run/systemd/journal
(if using --directory multiple times was allowed), but doesn't require
as much typing.

7 years agosd-journal: fix sd_journal_open_directory with SD_JOURNAL_OS_ROOT
Zbigniew Jędrzejewski-Szmek [Fri, 12 Aug 2016 04:32:10 +0000 (00:32 -0400)] 
sd-journal: fix sd_journal_open_directory with SD_JOURNAL_OS_ROOT

The directory argument that is given to sd_j_o_d was ignored when
SD_JOURNAL_OS_ROOT was given, and directories relative to the root of the host
file system were used. With that flag, sd_j_o_d should do the same as
sd_j_open_container: use the path as "prefix", i.e. the directory relative to
which everything happens.

Instead of touching sd_j_o_d, journal_new is fixed to do what sd_j_o_c
was doing, and treat the specified path as prefix when SD_JOURNAL_OS_ROOT is
specified.

7 years agosd-journal: allow SYSTEM and CURRENT_USER flags with sd_j_open_directory[_fd]
Zbigniew Jędrzejewski-Szmek [Fri, 12 Aug 2016 02:48:58 +0000 (22:48 -0400)] 
sd-journal: allow SYSTEM and CURRENT_USER flags with sd_j_open_directory[_fd]

There is no reason not to. This makes journalctl -D ... --system work,
useful for example when viewing files from a deactivated container.

7 years agosd-journal: split out flags into separate defines for legibility
Zbigniew Jędrzejewski-Szmek [Fri, 12 Aug 2016 02:43:07 +0000 (22:43 -0400)] 
sd-journal: split out flags into separate defines for legibility

… in preparation for future changes.

7 years agoMerge pull request #3942 from blueyed/zsh-respect-user-more
Zbigniew Jędrzejewski-Szmek [Thu, 11 Aug 2016 19:39:15 +0000 (15:39 -0400)] 
Merge pull request #3942 from blueyed/zsh-respect-user-more

zsh completion: handle --user mode when filtering by state and in journalctl commands

7 years agozsh: _journalctl: handle --user in _journal_none 3942/head
Daniel Hahler [Thu, 11 Aug 2016 16:52:13 +0000 (18:52 +0200)] 
zsh: _journalctl: handle --user in _journal_none

This uses the same mechanism from _systemctl to inject `--user` into the
`journalctrl -F _EXE` call to list executables.
Before this patch the "commands" section would list executables from
system units always.

7 years agozsh: _filter_units_by_property: respect --user
Daniel Hahler [Thu, 11 Aug 2016 16:46:31 +0000 (18:46 +0200)] 
zsh: _filter_units_by_property: respect --user

Use `$_sys_service_mgr` to handle `--user`, so that `systemctl --user
stop` will correctly filter the active (user) units.  Before this patch,
only user units that also exist as system units and are stoppable there
would be listed.

7 years agoman: add "timeout" to status table (#3919)
Zbigniew Jędrzejewski-Szmek [Thu, 11 Aug 2016 08:51:49 +0000 (04:51 -0400)] 
man: add "timeout" to status table (#3919)

7 years agocoredump: treat RLIMIT_CORE below page size as disabling coredumps (#3932)
Zbigniew Jędrzejewski-Szmek [Thu, 11 Aug 2016 08:51:00 +0000 (04:51 -0400)] 
coredump: treat RLIMIT_CORE below page size as disabling coredumps (#3932)

The kernel treats values below a certain threshold (minfmt->min_coredump
which is initialized do ELF_EXEC_PAGESIZE, which varies between architectures,
but is usually the same as PAGE_SIZE) as disabling coredumps [1].
Any core image below ELF_EXEC_PAGESIZE will yield an invalid backtrace anyway [2],
so follow the kernel and not try to parse or store such images.

[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/fs/coredump.c#n660
[2] systemd-coredump[16260]: Process 16258 (sleep) of user 1002 dumped core.
                                Stack trace of thread 16258:
                                #0  0x00007f1d8b3d3810 n/a (n/a)

https://bugzilla.redhat.com/show_bug.cgi?id=1309172#c19

7 years agoMerge pull request #3933 from keszybz/hwdb-parser
Lennart Poettering [Thu, 11 Aug 2016 08:49:57 +0000 (10:49 +0200)] 
Merge pull request #3933 from keszybz/hwdb-parser

Add hwdb parser to check for inconsistencies

7 years agoinstall: follow config_path symlink (#3362)
Rhys [Tue, 9 Aug 2016 13:33:46 +0000 (23:33 +1000)] 
install: follow config_path symlink (#3362)

Under NixOS, the config_path /etc/systemd/system is a symlink to
/etc/static/systemd/system. Commands such as `systemctl list-unit-files`
and `systemctl is-enabled` did not work as the symlink was not followed.

This does not affect how symlinks are treated within the config_path
directory.

7 years agosd-journal: watch logs below container's /{var,run}/log/journal (instead of the ...
Evgeny Vereshchagin [Tue, 9 Aug 2016 12:49:32 +0000 (15:49 +0300)] 
sd-journal: watch logs below container's /{var,run}/log/journal (instead of the /) (#3934)

Fixes #3927.

7 years agoadded Zelotes gaming mouse (#3925)
romanstingler [Tue, 9 Aug 2016 04:51:38 +0000 (06:51 +0200)] 
added Zelotes gaming mouse (#3925)

7 years agobuild-sys: hook up the hwdb parser to check 3933/head
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 19:07:41 +0000 (15:07 -0400)] 
build-sys: hook up the hwdb parser to check

7 years agohwdb: comment out a duplicated key for the XO
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 17:36:26 +0000 (13:36 -0400)] 
hwdb: comment out a duplicated key for the XO

It's hard to say which one of the two mappings should stay. But the later
one would win (when both very present), and nobody complained, so let's
assume that that's the one.

7 years agohwdb: use lowercase hex for key numbers
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 17:31:37 +0000 (13:31 -0400)] 
hwdb: use lowercase hex for key numbers

It seems awkward to have both cases mixes. Note that the real parser
accepts both cases, and this only standarizes the usage in the systemd
database.

7 years agohwdb: remove duplicated matches for old Logitech unifying receiver
Zbigniew Jędrzejewski-Szmek [Thu, 4 Aug 2016 19:31:05 +0000 (15:31 -0400)] 
hwdb: remove duplicated matches for old Logitech unifying receiver

Quoting https://github.com/systemd/systemd/pull/3906#discussion_r73828368:
> According to
> http://support.logitech.com/en_us/product/v220-cordless-optical-mouse-for-notebooks
> it seems the mouse is using a pre-version of the small unifying receiver we
> know now. If there are 2 mice with the same receiver, that means that the
> values should both be dropped IMO.

7 years agotests: add python parser for hwdb grammar
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 14:53:06 +0000 (10:53 -0400)] 
tests: add python parser for hwdb grammar

This works for hwdb/[67]0-*.hwdb. I also added code to parse hwdb/20-*, but those
files are huge, and parsing them using this parser is annoyingly slow (about one
minute for the biggest files). So I removed the support for hwdb/20-*, a much simpler
hand-generated parser should suffice for those.

Current output:

hwdb/60-evdev.hwdb: 24 match groups, 35 matches, 88 properties, 0.19323015213012695s to parse
Match 'evdev:input:b0003v05ACp0259*' is duplicated
Match 'evdev:input:b0003v05ACp025A*' is duplicated
Match 'evdev:input:b0003v05ACp025B*' is duplicated
hwdb/60-keyboard.hwdb: 122 match groups, 188 matches, 638 properties, 1.0906572341918945s to parse
Failed to parse: 'KEYBOARD_KEY_8F=switchvideomode'
Failed to parse: 'KEYBOARD_KEY_C0183=media'
Failed to parse: 'KEYBOARD_KEY_C0201=new'
Failed to parse: 'KEYBOARD_KEY_C0289=reply'
Failed to parse: 'KEYBOARD_KEY_C028B=forwardmail'
Failed to parse: 'KEYBOARD_KEY_C028C=send'
Failed to parse: 'KEYBOARD_KEY_C021A=undo'
Failed to parse: 'KEYBOARD_KEY_C0279=redo'
Failed to parse: 'KEYBOARD_KEY_C0208=print'
Failed to parse: 'KEYBOARD_KEY_C0207=save'
Failed to parse: 'KEYBOARD_KEY_C0194=file'
Failed to parse: 'KEYBOARD_KEY_C01A7=documents'
Failed to parse: 'KEYBOARD_KEY_C01B6=images'
Failed to parse: 'KEYBOARD_KEY_C01B7=sound'
Property KEYBOARD_KEY_c7 is duplicated
Failed to parse: 'KEYBOARD_KEY_cF=end'
hwdb/70-mouse.hwdb: 62 match groups, 93 matches, 68 properties, 0.34186625480651855s to parse
Match 'mouse:usb:v046dpc51b:name:Logitech USB Receiver:' is duplicated
hwdb/70-pointingstick.hwdb: 5 match groups, 14 matches, 7 properties, 0.06518816947937012s to parse
hwdb/70-touchpad.hwdb: 3 match groups, 5 matches, 3 properties, 0.039690494537353516s to parse

Subsequest commits will clean those issues up.

7 years agohwdb: indent commented properties
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 17:33:22 +0000 (13:33 -0400)] 
hwdb: indent commented properties

This way it's clear that the property block does not end at the comment.
The python checker will complain if this is not the case.
We had a few bugs before where two match blocks were merged by mistake,
and this change should help avoid that.

7 years agohwdb: remove extra spaces
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 14:52:21 +0000 (10:52 -0400)] 
hwdb: remove extra spaces

7 years agojournal-gatewayd: fix typo; s/Certificat/Certificate/ (#3931)
Vito Caputo [Tue, 9 Aug 2016 04:35:07 +0000 (21:35 -0700)] 
journal-gatewayd: fix typo; s/Certificat/Certificate/ (#3931)

7 years agohwdb: fix duplicate entry for Apple touchpads (#3921)
Peter Hutterer [Mon, 8 Aug 2016 22:58:19 +0000 (08:58 +1000)] 
hwdb: fix duplicate entry for Apple touchpads (#3921)

Copy-paste error, correct IDs from the kernel's drivers/input/mouse/bcm5974.c

Fixes: https://github.com/systemd/systemd/pull/3906/
7 years agocore: amend policy to open up dynamic user queries (#3920)
Zbigniew Jędrzejewski-Szmek [Mon, 8 Aug 2016 21:39:16 +0000 (17:39 -0400)] 
core: amend policy to open up dynamic user queries (#3920)

7 years agohwdb: add multimedia keys for Medion Akoya series (#3918)
romanstingler [Sun, 7 Aug 2016 15:45:44 +0000 (17:45 +0200)] 
hwdb: add multimedia keys for Medion Akoya series (#3918)

7 years agonetworkd: remove duplicate call to manager_dirty (#3917)
Susant Sahani [Sun, 7 Aug 2016 09:23:32 +0000 (14:53 +0530)] 
networkd: remove duplicate call to manager_dirty (#3917)

since link_dirty itself calls manager_dirty no need to
call it separately .

7 years agoMerge pull request #3914 from keszybz/fix-man-links
Lennart Poettering [Sun, 7 Aug 2016 09:17:56 +0000 (11:17 +0200)] 
Merge pull request #3914 from keszybz/fix-man-links

Fix man links

7 years agoman: add a table of possible exit statuses (#3910)
Zbigniew Jędrzejewski-Szmek [Sun, 7 Aug 2016 09:14:40 +0000 (05:14 -0400)] 
man: add a table of possible exit statuses (#3910)

7 years agoMerge pull request #3884 from poettering/private-users
Zbigniew Jędrzejewski-Szmek [Sat, 6 Aug 2016 20:41:35 +0000 (16:41 -0400)] 
Merge pull request #3884 from poettering/private-users

7 years agoman: fix some internal man page references 3914/head
Zbigniew Jędrzejewski-Szmek [Sat, 6 Aug 2016 20:38:09 +0000 (16:38 -0400)] 
man: fix some internal man page references

sd_journal-query_enumerate was an early draft, the name was changed
to sd_j_enumerate_fields.

7 years agoman: provide html links to a bunch of external man pages
Zbigniew Jędrzejewski-Szmek [Sat, 6 Aug 2016 20:36:51 +0000 (16:36 -0400)] 
man: provide html links to a bunch of external man pages

7 years agojournal-gatewayd: fix segfault with certain request (#3893)
Yi EungJun [Sat, 6 Aug 2016 20:39:13 +0000 (05:39 +0900)] 
journal-gatewayd: fix segfault with certain request (#3893)

When client requests to get logs with `follow` and `KEY=match` that
doesn't match any log entry, journal-gatewayd segfaulted.

Make request_reader_entries to return zero in such case to wait for
matching entries.

This fixes https://github.com/systemd/systemd/issues/3873.

7 years agojournal-gatewayd: add --directory option (#3913)
Yi EungJun [Sat, 6 Aug 2016 17:00:31 +0000 (02:00 +0900)] 
journal-gatewayd: add --directory option (#3913)

Serve journals in the specified directory instead of default journals.

7 years agoMerge pull request #3911 from crrodriguez/asan-fixes
Lennart Poettering [Sat, 6 Aug 2016 15:02:17 +0000 (17:02 +0200)] 
Merge pull request #3911 from crrodriguez/asan-fixes

Asan fixes

7 years agobuildsys,journal: allow -fsanitize=address without VALGRIND defined 3911/head
Cristian Rodríguez [Fri, 5 Aug 2016 16:10:41 +0000 (16:10 +0000)] 
buildsys,journal: allow -fsanitize=address without VALGRIND defined

Fixed (master) versions of libtool pass -fsanitize=address correctly
into CFLAGS and LDFLAGS allowing ASAN to be used without any special
configure tricks..however ASAN triggers in lookup3.c for the same
reasons valgrind does. take the alternative codepath if
__SANITIZE_ADDRESS__ is defined as well.

7 years agotest: fix stack overflow reported by ASAN
Cristian Rodríguez [Fri, 5 Aug 2016 16:07:49 +0000 (16:07 +0000)] 
test: fix stack overflow reported by ASAN

It was meant to write to q instead of t
FAIL: test-id128
================

=================================================================
==125770==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffd4615bd31 at pc 0x7a2f41b1bf33 bp 0x7ffd4615b750 sp 0x7ffd4615b748
WRITE of size 1 at 0x7ffd4615bd31 thread T0
    #0 0x7a2f41b1bf32 in id128_to_uuid_string src/libsystemd/sd-id128/id128-util.c:42
    #1 0x401f73 in main src/test/test-id128.c:147
    #2 0x7a2f41336341 in __libc_start_main (/lib64/libc.so.6+0x20341)
    #3 0x401129 in _start (/home/crrodriguez/scm/systemd/.libs/test-id128+0x401129)

Address 0x7ffd4615bd31 is located in stack of thread T0 at offset 1409 in frame
    #0 0x401205 in main src/test/test-id128.c:37

  This frame has 23 object(s):
    [32, 40) 'b'
    [96, 112) 'id'
    [160, 176) 'id2'
    [224, 240) 'a'
    [288, 304) 'b'
    [352, 368) 'a'
    [416, 432) 'b'
    [480, 496) 'a'
    [544, 560) 'b'
    [608, 624) 'a'
    [672, 688) 'b'
    [736, 752) 'a'
    [800, 816) 'b'
    [864, 880) 'a'
    [928, 944) 'b'
    [992, 1008) 'a'
    [1056, 1072) 'b'
    [1120, 1136) 'a'
    [1184, 1200) 'b'
    [1248, 1264) 'a'
    [1312, 1328) 'b'
    [1376, 1409) 't' <== Memory access at offset 1409 overflows this variable
    [1472, 1509) 'q'
HINT: this may be a false positive if your program uses some custom stack unwind mechanism or swapcontext
      (longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-buffer-overflow src/libsystemd/sd-id128/id128-util.c:42 in id128_to_uuid_string
Shadow bytes around the buggy address:
  0x100028c23750: f2 f2 00 00 f4 f4 f2 f2 f2 f2 00 00 f4 f4 f2 f2
  0x100028c23760: f2 f2 00 00 f4 f4 f2 f2 f2 f2 00 00 f4 f4 f2 f2
  0x100028c23770: f2 f2 00 00 f4 f4 f2 f2 f2 f2 00 00 f4 f4 f2 f2
  0x100028c23780: f2 f2 00 00 f4 f4 f2 f2 f2 f2 00 00 f4 f4 f2 f2
  0x100028c23790: f2 f2 00 00 f4 f4 f2 f2 f2 f2 00 00 f4 f4 f2 f2
=>0x100028c237a0: f2 f2 00 00 00 00[01]f4 f4 f4 f2 f2 f2 f2 00 00
  0x100028c237b0: 00 00 05 f4 f4 f4 00 00 00 00 00 00 00 00 00 00
  0x100028c237c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100028c237d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100028c237e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100028c237f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==125770==ABORTING
FAIL test-id128 (exit status: 1)

7 years agotest: test-sigbus must be skipped when -fsanitize=address is used
Cristian Rodríguez [Thu, 4 Aug 2016 16:49:19 +0000 (16:49 +0000)] 
test: test-sigbus must be skipped when -fsanitize=address is used

ASAN is unable to handle it.

7 years agoMerge pull request #3818 from poettering/exit-status-env
Zbigniew Jędrzejewski-Szmek [Sat, 6 Aug 2016 00:55:08 +0000 (20:55 -0400)] 
Merge pull request #3818 from poettering/exit-status-env

beef up /var/tmp and /tmp handling; set $SERVICE_RESULT/$EXIT_CODE/$EXIT_STATUS on ExecStop= and make sure root/nobody are always resolvable

7 years agonetworkd: add support to set STP (#3903)
Susant Sahani [Fri, 5 Aug 2016 23:44:57 +0000 (05:14 +0530)] 
networkd: add support to set STP (#3903)

fixes #3881

7 years agoMerge pull request #3900 from keszybz/fix-3607
Lennart Poettering [Fri, 5 Aug 2016 15:03:09 +0000 (17:03 +0200)] 
Merge pull request #3900 from keszybz/fix-3607

Fix 3607

7 years agosocket: add helper function to remove code duplication 3900/head
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 12:24:00 +0000 (08:24 -0400)] 
socket: add helper function to remove code duplication

7 years agocore/socket: include remote address in the message when dropping connection
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 03:51:47 +0000 (23:51 -0400)] 
core/socket: include remote address in the message when dropping connection

Without the address the message is not very useful.

Aug 04 23:52:21 rawhide systemd[1]: testlimit.socket: Too many incoming connections (4) from source ::1, dropping connection.

7 years agosystemd: do not serialize peer, bump count when deserializing socket instead
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 03:42:27 +0000 (23:42 -0400)] 
systemd: do not serialize peer, bump count when deserializing socket instead

7 years agocore/service: serialize and deserialize accept_socket
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 03:26:31 +0000 (23:26 -0400)] 
core/service: serialize and deserialize accept_socket

This fixes an issue during reexec — the count of connections would be lost:

[zbyszek@fedora-rawhide ~]$ systemctl status testlimit.socket | grep Connected
 Accepted: 1; Connected: 1

[zbyszek@fedora-rawhide ~]$ sudo systemctl daemon-reexec
[zbyszek@fedora-rawhide ~]$ systemctl status testlimit.socket | grep Connected
 Accepted: 1; Connected: 0

With the patch, Connected count is preserved.

Also add "Accept Socket" to the dump output for services.

7 years agocore/socket: rework SocketPeer refcounting
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 01:42:23 +0000 (21:42 -0400)] 
core/socket: rework SocketPeer refcounting

Make functions and definitions that don't need to be shared local to
socket.c.

7 years agoMerge pull request #3902 from poettering/parse-nice
Ronny Chevalier [Fri, 5 Aug 2016 11:35:52 +0000 (13:35 +0200)] 
Merge pull request #3902 from poettering/parse-nice

util-lib: unify parsing of nice level values

7 years agoutil-lib: unify parsing of nice level values 3902/head
Lennart Poettering [Fri, 5 Aug 2016 09:17:08 +0000 (11:17 +0200)] 
util-lib: unify parsing of nice level values

This adds parse_nice() that parses a nice level and ensures it is in the right
range, via a new nice_is_valid() helper. It then ports over a number of users
to this.

No functional changes.

7 years agonetworkd: do not set NOARP unconditionally (#3891)
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 08:37:10 +0000 (04:37 -0400)] 
networkd: do not set NOARP unconditionally (#3891)

Fixes #3890.

7 years agofileio: fix MIN/MAX mixup (#3896)
Vito Caputo [Fri, 5 Aug 2016 04:09:23 +0000 (21:09 -0700)] 
fileio: fix MIN/MAX mixup (#3896)

The intention is to clamp the value to READ_FULL_BYTES_MAX, which
would be the minimum of the two.

7 years agojournal-remote: remove unnecessary gnutls includes (#3895)
Vito Caputo [Fri, 5 Aug 2016 04:05:34 +0000 (21:05 -0700)] 
journal-remote: remove unnecessary gnutls includes (#3895)

journal-(gatewayd,remote).c don't actually utilize libgnutls even when
HAVE_GNUTLS is defined.

7 years agosystemd: convert peers_by_address to a set
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 00:55:45 +0000 (20:55 -0400)] 
systemd: convert peers_by_address to a set

7 years agobasic/set: remove some spurious spaces
Zbigniew Jędrzejewski-Szmek [Fri, 5 Aug 2016 00:36:10 +0000 (20:36 -0400)] 
basic/set: remove some spurious spaces

7 years agocore: only set the watchdog variables in ExecStart= lines 3818/head
Lennart Poettering [Thu, 4 Aug 2016 20:11:29 +0000 (22:11 +0200)] 
core: only set the watchdog variables in ExecStart= lines

7 years agocore: remember first unit failure, not last unit failure
Lennart Poettering [Thu, 4 Aug 2016 19:14:27 +0000 (21:14 +0200)] 
core: remember first unit failure, not last unit failure

Previously, the result value of a unit was overriden with each failure that
took place, so that the result always reported the last failure that took
place.

With this commit this is changed, so that the first failure taking place is
stored instead. This should normally not matter much as multiple failures are
sufficiently uncommon. However, it improves one behaviour: if we send SIGABRT
to a service due to a watchdog timeout, then this currently would be reported
as "coredump" failure, rather than the "watchodg" failure it really is. Hence,
in order to report information about the type of the failure, and not about
the effect of it, let's change this from all unit type to store the first, not
the last failure.

This addresses the issue pointed out here:

https://github.com/systemd/systemd/pull/3818#discussion_r73433520

7 years agoupdate TODO
Lennart Poettering [Wed, 27 Jul 2016 11:30:58 +0000 (13:30 +0200)] 
update TODO

7 years agonss-systemd: resolve root/nobody statically
Lennart Poettering [Wed, 27 Jul 2016 11:14:01 +0000 (13:14 +0200)] 
nss-systemd: resolve root/nobody statically

Let's extend nss-systemd to also synthesize user/group entries for the
UIDs/GIDs 0 and 65534 which have special kernel meaning. Given that nss-systemd
is listed in /etc/nsswitch.conf only very late any explicit listing in
/etc/passwd or /etc/group takes precedence.

This functionality is useful in minimal container-like setups that lack
/etc/passwd files (or only have incompletely populated ones).

7 years agocore: set $SERVICE_RESULT, $EXIT_CODE and $EXIT_STATUS in ExecStop=/ExecStopPost...
Lennart Poettering [Wed, 27 Jul 2016 09:51:11 +0000 (11:51 +0200)] 
core: set $SERVICE_RESULT, $EXIT_CODE and $EXIT_STATUS in ExecStop=/ExecStopPost= commands

This should simplify monitoring tools for services, by passing the most basic
information about service result/exit information via environment variables,
thus making it unnecessary to retrieve them explicitly via the bus.

7 years agomain: use pager for --dump-configuration-items (#3894)
0xAX [Thu, 4 Aug 2016 20:52:24 +0000 (23:52 +0300)] 
main: use pager for --dump-configuration-items (#3894)

7 years agofileio: fix read_full_stream() bugs (#3887)
Vito Caputo [Thu, 4 Aug 2016 20:52:02 +0000 (13:52 -0700)] 
fileio: fix read_full_stream() bugs (#3887)

read_full_stream() _always_ allocated twice the memory needed, due to
only breaking the realloc() && fread() loop when fread() returned 0,
requiring another iteration and exponentially enlarged buffer just to
discover the EOF condition.

This also caused file sizes >2MiB && <= 4MiB to erroneously be treated
as E2BIG, due to the inappropriately doubled buffer size exceeding
4*1024*1024.

Also made the 4*1024*1024 magic number a READ_FULL_BYTES_MAX constant.

7 years agoMerge pull request #3892 from toanju/fix-brvlan-error-on-normal-bridge
Lennart Poettering [Thu, 4 Aug 2016 18:39:57 +0000 (20:39 +0200)] 
Merge pull request #3892 from toanju/fix-brvlan-error-on-normal-bridge

networkd: apply bridge vlan configuration correct

7 years agonetworkd: apply bridge vlan configuration correct 3892/head
Tobias Jungel [Thu, 4 Aug 2016 15:11:13 +0000 (17:11 +0200)] 
networkd: apply bridge vlan configuration correct

bridge vlan configuration was applied even if it wasn't configured.

fixes #3876

7 years agocore: use the correct APIs to determine whether a dual timestamp is initialized
Lennart Poettering [Wed, 27 Jul 2016 09:50:37 +0000 (11:50 +0200)] 
core: use the correct APIs to determine whether a dual timestamp is initialized

7 years agocore: move masking of chroot/permission masking into service_spawn()
Lennart Poettering [Tue, 26 Jul 2016 15:53:07 +0000 (17:53 +0200)] 
core: move masking of chroot/permission masking into service_spawn()

Let's fix up the flags fields in service_spawn() rather than its callers, in
order to simplify things a bit.

7 years agocore: turn various execution flags into a proper flags parameter
Lennart Poettering [Tue, 26 Jul 2016 15:40:35 +0000 (17:40 +0200)] 
core: turn various execution flags into a proper flags parameter

The ExecParameters structure contains a number of bit-flags, that were so far
exposed as bool:1, change this to a proper, single binary bit flag field. This
makes things a bit more expressive, and is helpful as we add more flags, since
these booleans are passed around in various callers, for example
service_spawn(), whose signature can be made much shorter now.

Not all bit booleans from ExecParameters are moved into the flags field for
now, but this can be added later.

7 years agoutil-lib: rework /tmp and /var/tmp handling code
Lennart Poettering [Tue, 26 Jul 2016 15:23:28 +0000 (17:23 +0200)] 
util-lib: rework /tmp and /var/tmp handling code

Beef up the existing var_tmp() call, rename it to var_tmp_dir() and add a
matching tmp_dir() call (the former looks for the place for /var/tmp, the
latter for /tmp).

Both calls check $TMPDIR, $TEMP, $TMP, following the algorithm Python3 uses.
All dirs are validated before use. secure_getenv() is used in order to limite
exposure in suid binaries.

This also ports a couple of users over to these new APIs.

The var_tmp() return parameter is changed from an allocated buffer the caller
will own to a const string either pointing into environ[], or into a static
const buffer. Given that environ[] is mostly considered constant (and this is
exposed in the very well-known getenv() call), this should be OK behaviour and
allows us to avoid memory allocations in most cases.

Note that $TMPDIR and friends override both /var/tmp and /tmp usage if set.

7 years agoMerge pull request #2471 from michaelolbrich/transient-mounts
Lennart Poettering [Thu, 4 Aug 2016 14:16:04 +0000 (16:16 +0200)] 
Merge pull request #2471 from michaelolbrich/transient-mounts

allow transient mounts and automounts

7 years agoMerge pull request #3885 from keszybz/help-output
Lennart Poettering [Thu, 4 Aug 2016 14:11:38 +0000 (16:11 +0200)] 
Merge pull request #3885 from keszybz/help-output

Update help for "short-full" and shorten to 80 columns

7 years agonetworkd: add support to configure NOARP/ARP for interface (#3854)
Susant Sahani [Thu, 4 Aug 2016 14:00:58 +0000 (19:30 +0530)] 
networkd: add support to configure NOARP/ARP for interface (#3854)

https://lists.freedesktop.org/archives/systemd-devel/2016-August/037268.html

7 years agonetworkd: remove route if carrier is lost (#3831)
Susant Sahani [Thu, 4 Aug 2016 13:56:39 +0000 (19:26 +0530)] 
networkd: remove route if carrier is lost (#3831)

Fixes #3669.

7 years agosrc/test: add tests for parse_percent_unbounded (#3889)
Jonathan Boulle [Thu, 4 Aug 2016 13:54:10 +0000 (15:54 +0200)] 
src/test: add tests for parse_percent_unbounded (#3889)

7 years agoman: describe list-dependencies --all 3885/head
Zbigniew Jędrzejewski-Szmek [Thu, 4 Aug 2016 03:49:18 +0000 (23:49 -0400)] 
man: describe list-dependencies --all

Meaning of --all was mentioned in list-dependencies description, but the this
effect should also be mentioned in the description of the option itself.

7 years agonspawn,resolve: short --help output to fit within 80 columns
Zbigniew Jędrzejewski-Szmek [Thu, 4 Aug 2016 00:05:37 +0000 (20:05 -0400)] 
nspawn,resolve: short --help output to fit within 80 columns

make dist-check-help FTW!

7 years agojournalctl,systemctl: add "short-full", "short-unix" mode to --help
Zbigniew Jędrzejewski-Szmek [Wed, 3 Aug 2016 23:52:28 +0000 (19:52 -0400)] 
journalctl,systemctl: add "short-full", "short-unix" mode to --help

7 years agoutil-lib: add parse_percent_unbounded() for percentages over 100% (#3886)
David Michael [Thu, 4 Aug 2016 11:09:54 +0000 (04:09 -0700)] 
util-lib: add parse_percent_unbounded() for percentages over 100% (#3886)

This permits CPUQuota to accept greater values as documented.

7 years agoMerge pull request #3820 from poettering/nspawn-resolvconf
Zbigniew Jędrzejewski-Szmek [Thu, 4 Aug 2016 00:14:32 +0000 (20:14 -0400)] 
Merge pull request #3820 from poettering/nspawn-resolvconf

nspawn resolv.conf handling improvements, and inherit $TERM all the way through nspawn → console login

7 years agohwdb: fix hwdb entry for numeric-only Lenovo *40, *50 and *60 series
Peter Hutterer [Wed, 3 Aug 2016 23:57:36 +0000 (09:57 +1000)] 
hwdb: fix hwdb entry for numeric-only Lenovo *40, *50 and *60 series

Commit e5bc3f4fdc matches on e.g. a T440s, but not a T440 (i.e. the one
without a suffix).

7 years agojournalctl: add new output mode "short-full" (#3880)
Lennart Poettering [Wed, 3 Aug 2016 23:45:07 +0000 (01:45 +0200)] 
journalctl: add new output mode "short-full" (#3880)

This new output mode formats all timestamps using the usual format_timestamp()
call we use pretty much everywhere else. Timestamps formatted this way are some
ways more useful than traditional syslog timestamps as they include weekday,
month and timezone information, while not being much longer. They are also not
locale-dependent. The primary advantage however is that they may be passed
directly to journalctl's --since= and --until= switches as soon as #3869 is
merged.

While we are at it, let's also add "short-unix" to shell completion.

7 years agoutil-lib: make timestamp generation and parsing reversible (#3869)
Lennart Poettering [Wed, 3 Aug 2016 23:04:53 +0000 (01:04 +0200)] 
util-lib: make timestamp generation and parsing reversible (#3869)

This patch improves parsing and generation of timestamps and calendar
specifications in two ways:

- The week day is now always printed in the abbreviated English form, instead
  of the locale's setting. This makes sure we can always parse the week day
  again, even if the locale is changed. Given that we don't follow locale
  settings for printing timestamps in any other way either (for example, we
  always use 24h syntax in order to make uniform parsing possible), it only
  makes sense to also stick to a generic, non-localized form for the timestamp,
  too.

- When parsing a timestamp, the local timezone (in its DST or non-DST name)
  may be specified, in addition to "UTC". Other timezones are still not
  supported however (not because we wouldn't want to, but mostly because libc
  offers no nice API for that). In itself this brings no new features, however
  it ensures that any locally formatted timestamp's timezone is also parsable
  again.

These two changes ensure that the output of format_timestamp() may always be
passed to parse_timestamp() and results in the original input. The related
flavours for usec/UTC also work accordingly. Calendar specifications are
extended in a similar way.

The man page is updated accordingly, in particular this removes the claim that
timestamps systemd prints wouldn't be parsable by systemd. They are now.

The man page previously showed invalid timestamps as examples. This has been
removed, as the man page shouldn't be a unit test, where such negative examples
would be useful. The man page also no longer mentions the names of internal
functions, such as format_timestamp_us() or UNIX error codes such as EINVAL.

7 years agoupdate TODO 3884/head
Lennart Poettering [Wed, 3 Aug 2016 16:40:48 +0000 (18:40 +0200)] 
update TODO

7 years agocore: add new PrivateUsers= option to service execution
Lennart Poettering [Wed, 3 Aug 2016 16:44:51 +0000 (18:44 +0200)] 
core: add new PrivateUsers= option to service execution

This setting adds minimal user namespacing support to a service. When set the invoked
processes will run in their own user namespace. Only a trivial mapping will be
set up: the root user/group is mapped to root, and the user/group of the
service will be mapped to itself, everything else is mapped to nobody.

If this setting is used the service runs with no capabilities on the host, but
configurable capabilities within the service.

This setting is particularly useful in conjunction with RootDirectory= as the
need to synchronize /etc/passwd and /etc/group between the host and the service
OS tree is reduced, as only three UID/GIDs need to match: root, nobody and the
user of the service itself. But even outside the RootDirectory= case this
setting is useful to substantially reduce the attack surface of a service.

Example command to test this:

        systemd-run -p PrivateUsers=1 -p User=foobar -t /bin/sh

This runs a shell as user "foobar". When typing "ps" only processes owned by
"root", by "foobar", and by "nobody" should be visible.

7 years agosystemctl: consider service running only when it is in active or reloading state...
Lukáš Nykrýn [Wed, 3 Aug 2016 15:08:37 +0000 (17:08 +0200)] 
systemctl: consider service running only when it is in active or reloading state (#3874)

Otherwise for example services that are failing on start and have Restart=on-failure
and bigger RestartSec systemctl status will return 0.

Fixes: #3864
7 years agonspawn: if we can't mark the boot ID RO let's fail 3820/head
Lennart Poettering [Wed, 3 Aug 2016 12:51:05 +0000 (14:51 +0200)] 
nspawn: if we can't mark the boot ID RO let's fail

It's probably better to be safe here.

7 years agoexecute: don't set $SHELL and $HOME for services, if they don't contain interesting...
Lennart Poettering [Wed, 27 Jul 2016 18:00:33 +0000 (20:00 +0200)] 
execute: don't set $SHELL and $HOME for services, if they don't contain interesting data

7 years agocore: inherit TERM from PID 1 for all services started on /dev/console
Lennart Poettering [Wed, 27 Jul 2016 13:25:55 +0000 (15:25 +0200)] 
core: inherit TERM from PID 1 for all services started on /dev/console

This way, invoking nspawn from a shell in the best case inherits the TERM
setting all the way down into the login shell spawned in the container.

Fixes: #3697
7 years agocore: drop spurious newline
Lennart Poettering [Wed, 27 Jul 2016 13:12:42 +0000 (15:12 +0200)] 
core: drop spurious newline

7 years agonspawn: deprecate --share-system support
Lennart Poettering [Wed, 27 Jul 2016 12:56:17 +0000 (14:56 +0200)] 
nspawn: deprecate --share-system support

This removes the --share-system switch: from the documentation, the --help text
as well as the command line parsing. It's an ugly option, given that it kinda
contradicts the whole concept of PID namespaces that nspawn implements. Since
it's barely ever used, let's just deprecate it and remove it from the options.

It might be useful as a debugging option, hence the functionality is kept
around for now, exposed via an undocumented $SYSTEMD_NSPAWN_SHARE_SYSTEM
environment variable.

7 years agonspawn: try to bind mount resolved's resolv.conf snippet into the container
Lennart Poettering [Wed, 27 Jul 2016 12:50:45 +0000 (14:50 +0200)] 
nspawn: try to bind mount resolved's resolv.conf snippet into the container

This has the benefit that the container can follow the host's DNS server
changes without us having to constantly update the container's resolv.conf
settings.

7 years agoMerge pull request #3828 from keszybz/drop-systemd-vconsole-setup-service
Lennart Poettering [Wed, 3 Aug 2016 12:38:36 +0000 (14:38 +0200)] 
Merge pull request #3828 from keszybz/drop-systemd-vconsole-setup-service

Update documentation for systemd-vconsole-setup

7 years agohwdb: compress the various Lenovo *40, *50 and *60 series (#3877)
Peter Hutterer [Wed, 3 Aug 2016 11:12:37 +0000 (21:12 +1000)] 
hwdb: compress the various Lenovo *40, *50 and *60 series (#3877)

Each series has identical hardware, let's use a glob instead of listing them
one by one.

7 years agohwdb: add ID_INPUT_TRACKBALL as additional identifier (#3872)
Peter Hutterer [Wed, 3 Aug 2016 10:34:56 +0000 (20:34 +1000)] 
hwdb: add ID_INPUT_TRACKBALL as additional identifier (#3872)

Whether a device is a trackball or not is a physical property so we should
store this globally, in one place. The new property must be set in addition to
ID_INPUT_MOUSE, otherwise existing clients won't detect the device.

No actual code changes required, the default match rule is simply checking for
"Trackball" in the name (in a few versions), other entries need to be added
manually.

7 years agosocket: add support to control no. of connections from one source (#3607)
Susant Sahani [Tue, 2 Aug 2016 17:48:23 +0000 (23:18 +0530)] 
socket: add support to control no. of connections from one source (#3607)

Introduce MaxConnectionsPerSource= that is number of concurrent
connections allowed per IP.

RFE: 1939

7 years agoMerge pull request #3858 from jfilak/coredump-containers-v2
Zbigniew Jędrzejewski-Szmek [Tue, 2 Aug 2016 17:38:00 +0000 (13:38 -0400)] 
Merge pull request #3858 from jfilak/coredump-containers-v2

Coredump: save information useful for debuging crashes in containers - v2

7 years agotest: fix test-execute personality tests on ppc64 and aarch64 (#3825)
Jan Synacek [Tue, 2 Aug 2016 14:22:56 +0000 (16:22 +0200)] 
test: fix test-execute personality tests on ppc64 and aarch64 (#3825)

7 years agogitignore: libsystemd-journal.pc is no more (#3863)
Zbigniew Jędrzejewski-Szmek [Tue, 2 Aug 2016 14:04:39 +0000 (10:04 -0400)] 
gitignore: libsystemd-journal.pc is no more (#3863)

…since 4de282cf9324ab.

7 years agocoredump: save process container parent cmdline 3858/head
Jakub Filak [Wed, 27 Apr 2016 13:23:49 +0000 (15:23 +0200)] 
coredump: save process container parent cmdline

Process container parent is the process used to start processes with a new
user namespace - e.g systemd-nspawn, runc, lxc, etc.

There is not standard way how to find such a process - or I do not know
about it - hence I have decided to find the first process in the parent
process hierarchy with a different mount namespace and different
/proc/self/root's inode.

I have decided for this criteria because in ABRT we take special care
only if the crashed process runs different code than installed on the
host. Other processes with namespaces different than PID 1's namespaces
are just processes running code shipped by the OS vendor and bug
reporting tools can get information about the provider of the code
without the need to deal with changed root and so on.

7 years agomain: load Smack policy before IMA policy (#3859)
Ismo Puustinen [Tue, 2 Aug 2016 12:58:30 +0000 (15:58 +0300)] 
main: load Smack policy before IMA policy (#3859)

IMA wiki says: "If the IMA policy contains LSM labels, then the LSM
policy must be loaded prior to the IMA policy." Right now, in case of
Smack, the IMA policy is loaded before the Smack policy. Move the order
around to allow Smack labels to be used in IMA policy.

7 years agounits: add graphical-session-pre.target user unit (#3848)
Martin Pitt [Tue, 2 Aug 2016 12:56:45 +0000 (14:56 +0200)] 
units: add graphical-session-pre.target user unit (#3848)

This complements graphical-session.target for services which set up the
environment (e. g. dbus-update-activation-environment) and need to run before
the actual graphical session.

7 years agosystemd-ask-password: make sure directory watch is started before cryptsetup (#3850)
tblume [Tue, 2 Aug 2016 12:55:25 +0000 (14:55 +0200)] 
systemd-ask-password: make sure directory watch is started before cryptsetup (#3850)

The password directory watch should get ordered before cryptsetup to make sure
that the password for unlocking the crypt device gets prompted.

7 years agocoredump: save /proc/[pid]/mountinfo
Jakub Filak [Tue, 26 Apr 2016 07:54:39 +0000 (09:54 +0200)] 
coredump: save /proc/[pid]/mountinfo

The file contains information one can use to debug processes running
within a container.

7 years agomachinectl: hide legend in a case when no data (#3839)
0xAX [Mon, 1 Aug 2016 15:39:27 +0000 (18:39 +0300)] 
machinectl: hide legend in a case when no data (#3839)

For this moment machinectl prints legend and count of machines/images/etc.
But in a case when we have no images,machines,etc., there is no sense to
show legend:

~$ machinectl
MACHINE CLASS SERVICE

0 machines listed.

Let's print only 'No machines', 'No images', 'No transfers' in this case.

7 years agovirt: detect bhyve (FreeBSD hypervisor) (#3840)
Leonardo Brondani Schenkel [Mon, 1 Aug 2016 13:04:49 +0000 (15:04 +0200)] 
virt: detect bhyve (FreeBSD hypervisor) (#3840)

The CPUID and DMI vendor strings do not seem to be documented.
Values were found experimentally and by inspecting the source code.