]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
6 years agolog: only open kmsg on fallback if we actually want to use it
Lennart Poettering [Wed, 21 Feb 2018 23:31:36 +0000 (00:31 +0100)] 
log: only open kmsg on fallback if we actually want to use it

Previously, we'd try to open kmsg on failure of the journal/syslog even
if no automatic fallback to kmsg was requested — and we wouldn't even
use the open connection afterwards...

6 years agoumount: beef up logging when umount/remount child processes fail
Lennart Poettering [Wed, 21 Feb 2018 22:57:21 +0000 (23:57 +0100)] 
umount: beef up logging when umount/remount child processes fail

Let's extend what we log if umount/remount doesn't work correctly as we
expect.

See #8155

6 years agouser-sessions: let's simplify our code paths a bit
Lennart Poettering [Wed, 21 Feb 2018 22:42:58 +0000 (23:42 +0100)] 
user-sessions: let's simplify our code paths a bit

Let's always go through mac_selinux_finish(), by making our
success/failure codepaths more alike.

This also saves a few lines of code. Yay!

6 years agohwdb: drop bad definition for Cordless Wave Pro keyboard (#8230)
Zbigniew Jędrzejewski-Szmek [Wed, 21 Feb 2018 22:21:28 +0000 (23:21 +0100)] 
hwdb: drop bad definition for Cordless Wave Pro keyboard (#8230)

[I'm just submitting the solution originally suggested by @barzog.
Nevertheless, this looks pretty straightforward, we don't want to define
any keys on a universal receiver.

Note that this definition was added back in
aedc2eddd16e48d468e6ad0aea2caf00c7d37365, when we didn't yet have
support for figuring out what hardware is connected behind a logitech
receiver.]

In 60-keyboard.hwdb there is a definition of # Cordless Wave Pro
evdev:input:b0003v046DpC52[9B]*

which in fact not a cordless keyboard but an USB receiver to which different
types of keyboard can be connected. The solution is to completely clean
definition evdev:input:b0003v046DpC52B* from there.

I: Bus=0003 Vendor=046d Product=c52b Version=0111
N: Name="Logitech USB Receiver"
P: Phys=usb-0000:00:1d.0-1.8/input1
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.8/4-1.8:1.1/0003:046D:C52B.0005/input/input20
U: Uniq=
H: Handlers=kbd mouse0 event8
B: PROP=0
B: EV=1f
B: KEY=3007f 0 0 83ffff17aff32d bf54444600000000 ffff0001 130f978b17c000 6773fad941dfed 9ed68000004400 10000002
B: REL=1c3
B: ABS=100000000
B: MSC=10

Fixed #8095.

6 years agotest: fix test for TemporaryFileSystem= (#8241)
Yu Watanabe [Wed, 21 Feb 2018 15:43:35 +0000 (00:43 +0900)] 
test: fix test for TemporaryFileSystem= (#8241)

This makes test-execute work on SELinux enabled systems.

Fixes the issue reported at
https://github.com/systemd/systemd/pull/7908#discussion_r169583540

6 years agomissing_syscall: when adding syscall replacements, use different names (#8229)
Zbigniew Jędrzejewski-Szmek [Wed, 21 Feb 2018 13:04:50 +0000 (14:04 +0100)] 
missing_syscall: when adding syscall replacements, use different names (#8229)

In meson.build we check that functions are available using:
    meson.get_compiler('c').has_function('foo')
which checks the following:
- if __stub_foo or __stub___foo are defined, return false
- if foo is declared (a pointer to the function can be taken), return true
- otherwise check for __builtin_memfd_create

_stub is documented by glibc as
   It defines a symbol '__stub_FUNCTION' for each function
   in the C library which is a stub, meaning it will fail
   every time called, usually setting errno to ENOSYS.

So if __stub is defined, we know we don't want to use the glibc version, but
this doesn't tell us if the name itself is defined or not. If it _is_ defined,
and we define our replacement as an inline static function, we get an error:

In file included from ../src/basic/missing.h:1358:0,
                 from ../src/basic/util.h:47,
                 from ../src/basic/calendarspec.h:29,
                 from ../src/basic/calendarspec.c:34:
../src/basic/missing_syscall.h:65:19: error: static declaration of 'memfd_create' follows non-static declaration
 static inline int memfd_create(const char *name, unsigned int flags) {
                   ^~~~~~~~~~~~
.../usr/include/bits/mman-shared.h:46:5: note: previous declaration of 'memfd_create' was here
 int memfd_create (const char *__name, unsigned int __flags) __THROW;
     ^~~~~~~~~~~~

To avoid this problem, call our inline functions different than glibc,
and use a #define to map the official name to our replacement.

Fixes #8099.

v2:
- use "missing_" as the prefix instead of "_"

v3:
- rebase and update for statx()

  Unfortunately "statx" is also present in "struct statx", so the define
  causes issues. Work around this by using a typedef.

I checked that systemd compiles with current glibc
(glibc-devel-2.26-24.fc27.x86_64) if HAVE_MEMFD_CREATE, HAVE_GETTID,
HAVE_PIVOT_ROOT, HAVE_SETNS, HAVE_RENAMEAT2, HAVE_KCMP, HAVE_KEYCTL,
HAVE_COPY_FILE_RANGE, HAVE_BPF, HAVE_STATX are forced to 0.

Setting HAVE_NAME_TO_HANDLE_AT to 0 causes an issue, but it's not because of
the define, but because of struct file_handle.

6 years agoMerge pull request #8235 from keszybz/skip-nobody-test
Evgeny Vereshchagin [Wed, 21 Feb 2018 09:19:02 +0000 (12:19 +0300)] 
Merge pull request #8235 from keszybz/skip-nobody-test

Skip tests for nobody if necessary

6 years agotest-user-util: skip most tests for nobody if synthentization is off 8235/head
Zbigniew Jędrzejewski-Szmek [Tue, 20 Feb 2018 16:13:41 +0000 (17:13 +0100)] 
test-user-util: skip most tests for nobody if synthentization is off

When synthetisation is turned off, there's just too many ways those tests can
go wrong. We are not interested in verifying that the db on disk is correct,
let's just skip all checks.

In the first version of this patch, I recorded if we detected a mismatch during
configuration and only skipped tests in that case, but actually it is possible
to change the host configuration between our configuration phase and running
of the tests. It's just more robust to skip always. (This is particularly true
if tests are installed.)

6 years agoMerge pull request #7908 from yuwata/rfe-7895
Alan Jenkins [Wed, 21 Feb 2018 08:57:11 +0000 (08:57 +0000)] 
Merge pull request #7908 from yuwata/rfe-7895

core: add TemporaryFileSystem= setting and 'tmpfs' option to ProtectHome=

6 years agotests: stop using `nobody` in test-udev.pl (#8239)
Evgeny Vereshchagin [Wed, 21 Feb 2018 07:34:42 +0000 (10:34 +0300)] 
tests: stop using `nobody` in test-udev.pl (#8239)

`nobody` is a special user, whose credentials should be extracted with
`get_user_creds`. `getpwnam` called in `test-udev.pl` is a bit different,
which causes the test to fail with the following error:
```
device '/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda' expecting node/link 'node'
  expected permissions are: nobody::0600
  created permissions are : 65534:0:0600
permissions: error
add:         ok
remove:      ok
```
The ideal fix would probably be to implement `get_user_creds` in Perl, but in this
PR the issue is simply got around by using `daemon` instead of `nobody`.

Closes https://github.com/systemd/systemd/issues/8196.

6 years agodoc: update TRANSIENT-SETTINGS.md 7908/head
Yu Watanabe [Tue, 13 Feb 2018 11:29:34 +0000 (20:29 +0900)] 
doc: update TRANSIENT-SETTINGS.md

6 years agocore: add DBus API for TemporaryFileSystem=
Yu Watanabe [Tue, 20 Feb 2018 08:57:40 +0000 (17:57 +0900)] 
core: add DBus API for TemporaryFileSystem=

6 years agocore: add new option 'tmpfs' to ProtectHome=
Yu Watanabe [Wed, 21 Feb 2018 00:13:11 +0000 (09:13 +0900)] 
core: add new option 'tmpfs' to ProtectHome=

This make ProtectHome= setting can take 'tmpfs'. This is mostly
equivalent to `TemporaryFileSystem=/home /run/user /root`.

6 years agotest: add tests for TemporaryFileSystem=
Yu Watanabe [Tue, 20 Feb 2018 07:50:12 +0000 (16:50 +0900)] 
test: add tests for TemporaryFileSystem=

6 years agoman: add documents for TemporaryFileSystem=
Yu Watanabe [Wed, 21 Feb 2018 00:10:27 +0000 (09:10 +0900)] 
man: add documents for TemporaryFileSystem=

6 years agocore: add new setting TemporaryFileSystem=
Yu Watanabe [Wed, 21 Feb 2018 00:17:52 +0000 (09:17 +0900)] 
core: add new setting TemporaryFileSystem=

This introduces a new setting TemporaryFileSystem=. This is useful
to hide files not relevant to the processes invoked by unit, while
necessary files or directories can be still accessed by combining
with Bind{,ReadOnly}Paths=.

6 years agocore/namespace: make '-' prefix in Bind{,ReadOnly}Paths= work
Yu Watanabe [Wed, 21 Feb 2018 00:07:56 +0000 (09:07 +0900)] 
core/namespace: make '-' prefix in Bind{,ReadOnly}Paths= work

Each path in `Bind{ReadOnly}Paths=` accept '-' prefix. However,
the prefix is completely ignored.
This makes it work as expected.

6 years agonspawn: remove unnecessary mount option parsing logic
Yu Watanabe [Wed, 14 Feb 2018 05:25:22 +0000 (14:25 +0900)] 
nspawn: remove unnecessary mount option parsing logic

6 years agomount-util: call mount_option_mangle() in mount_verbose()
Yu Watanabe [Thu, 15 Feb 2018 00:43:02 +0000 (09:43 +0900)] 
mount-util: call mount_option_mangle() in mount_verbose()

6 years agotest: add tests for mount_option_mangle()
Yu Watanabe [Thu, 15 Feb 2018 00:36:18 +0000 (09:36 +0900)] 
test: add tests for mount_option_mangle()

6 years agomount-util: add mount_option_mangle()
Yu Watanabe [Thu, 15 Feb 2018 00:32:04 +0000 (09:32 +0900)] 
mount-util: add mount_option_mangle()

This is used in the later commits.

6 years agocore: simplify DBus API for BindPaths=
Yu Watanabe [Wed, 21 Feb 2018 00:06:32 +0000 (09:06 +0900)] 
core: simplify DBus API for BindPaths=

6 years agocore: fix DBus API for AppArmorProfile= and SmackProcessLabel=
Yu Watanabe [Tue, 13 Feb 2018 05:16:35 +0000 (14:16 +0900)] 
core: fix DBus API for AppArmorProfile= and SmackProcessLabel=

6 years agocore/execute: clear bind_mounts
Yu Watanabe [Tue, 13 Feb 2018 05:22:23 +0000 (14:22 +0900)] 
core/execute: clear bind_mounts

6 years agocore/execute: simplify compile_bind_mounts()
Yu Watanabe [Mon, 12 Feb 2018 07:16:58 +0000 (16:16 +0900)] 
core/execute: simplify compile_bind_mounts()

It is not necessary to re-assign error code.

6 years agonspawn: fix indentation
Yu Watanabe [Mon, 12 Feb 2018 08:23:35 +0000 (17:23 +0900)] 
nspawn: fix indentation

6 years agocore/namespace: remove unused argument
Yu Watanabe [Tue, 13 Feb 2018 05:21:13 +0000 (14:21 +0900)] 
core/namespace: remove unused argument

6 years agocore/namespace: use free_and_replace()
Yu Watanabe [Mon, 12 Feb 2018 05:27:49 +0000 (14:27 +0900)] 
core/namespace: use free_and_replace()

6 years agocore/namespace: fix comment
Yu Watanabe [Wed, 14 Feb 2018 04:29:13 +0000 (13:29 +0900)] 
core/namespace: fix comment

6 years agocore/namespace: merge PRIVATE_VAR_TMP into PRIVATE_TMP
Yu Watanabe [Mon, 19 Feb 2018 06:19:41 +0000 (15:19 +0900)] 
core/namespace: merge PRIVATE_VAR_TMP into PRIVATE_TMP

6 years agocore/namespace: make arguments const if possible
Yu Watanabe [Sat, 10 Feb 2018 10:24:57 +0000 (19:24 +0900)] 
core/namespace: make arguments const if possible

6 years agojournalctl: improve hint about lack of access for --user-unit=...
Zbigniew JÄ\99drzejewski-Szmek [Mon, 19 Feb 2018 21:40:26 +0000 (22:40 +0100)] 
journalctl: improve hint about lack of access for --user-unit=...

When running journalctl --user-unit=foo as an unprivileged user we could get
the usual hint:
Hint: You are currently not seeing messages from the system and other users.
      Users in groups 'adm', 'systemd-journal', 'wheel' can see all messages.
      ...
But with --user-unit our filter is:
(((_UID=0 OR _UID=1000) AND OBJECT_SYSTEMD_USER_UNIT=foo.service) OR
 ((_UID=0 OR _UID=1000) AND COREDUMP_USER_UNIT=foo.service) OR
 (_UID=1000 AND USER_UNIT=foo.service) OR
 (_UID=1000 AND _SYSTEMD_USER_UNIT=foo.service))
so we would never see messages from other users.

We could still see messages from the system. In fact, on my machine the
only messages with OBJECT_SYSTEMD_USER_UNIT= are from the system:
journalctl  $(journalctl -F OBJECT_SYSTEMD_USER_UNIT|sed 's/.*/OBJECT_SYSTEMD_USER_UNIT=\0/')

Thus, a more correct hint is that we cannot see messages from the system.
Make it so.

Fixes #7887.

6 years agotest-user-util: print function delimiters
Zbigniew Jędrzejewski-Szmek [Tue, 20 Feb 2018 21:10:45 +0000 (22:10 +0100)] 
test-user-util: print function delimiters

This makes it easier to see what is going on. Crashes may happen in a
nested test_{uid,gid}_to_name_one() function, and the default backtrace
doesn't show the actual string being tested.

6 years agoMerge pull request #8222 from poettering/journal-by-inode
Zbigniew Jędrzejewski-Szmek [Tue, 20 Feb 2018 20:36:25 +0000 (21:36 +0100)] 
Merge pull request #8222 from poettering/journal-by-inode

make sure we detect journal rotation even on inotify q overrun

6 years agoTODO: drop one item
Zbigniew Jędrzejewski-Szmek [Tue, 20 Feb 2018 13:53:09 +0000 (14:53 +0100)] 
TODO: drop one item

C.f. 7cb609115c532c3591d43a604d67d72e508ba5d9.

6 years agoxattr-util: use crtime/btime if statx() is available for implementation of fd_setcrti... 8222/head
Lennart Poettering [Tue, 20 Feb 2018 11:48:33 +0000 (12:48 +0100)] 
xattr-util: use crtime/btime if statx() is available for implementation of fd_setcrtime() and friends

The Linux kernel exposes the birth time now for files through statx()
hence make use of it where available. We keep the xattr logic in place
for this however, since only a subset of file systems on Linux currently
expose the birth time. NFS and tmpfs for example do not support it. OTOH
there are other file systems that do support the birth time but might
not support xattrs (smb…), hence make the best of the two, in particular
in order to deal with journal files copied between file system types and
to maintain compatibility with older file systems that are updated to
newer version of the file system.

6 years agoxattr-util: support AT_EMPTY_PATH in fgetxattrat_fake()
Lennart Poettering [Tue, 20 Feb 2018 11:46:14 +0000 (12:46 +0100)] 
xattr-util: support AT_EMPTY_PATH in fgetxattrat_fake()

Let's expose fstatat() like behaviour if AT_EMPTY_PATH is defined.

Also, check the specified flags returning EINVAL on the flags we don't
emulate.

6 years agojournal-file: fix typo in log message
Lennart Poettering [Tue, 20 Feb 2018 10:40:07 +0000 (11:40 +0100)] 
journal-file: fix typo in log message

6 years agoio-util: add an unlikely decorator for a test that should never hold
Lennart Poettering [Mon, 19 Feb 2018 17:37:50 +0000 (18:37 +0100)] 
io-util: add an unlikely decorator for a test that should never hold

6 years agotree-wide: make use of fsync_directory_of_file() all over the place
Lennart Poettering [Mon, 19 Feb 2018 17:24:36 +0000 (18:24 +0100)] 
tree-wide: make use of fsync_directory_of_file() all over the place

Let's make use this at various places we call fsync(), to make things
fully reliable, as the kernel devs suggest to first fsync() files and
then fsync() the directories they are located in.

6 years agofs-util: move fsync_directory_of_file() into generic code
Lennart Poettering [Mon, 19 Feb 2018 17:23:38 +0000 (18:23 +0100)] 
fs-util: move fsync_directory_of_file() into generic code

This function used by the journal code is pretty useful generically,
let's move it to fs-util.c to make it useful for other code too.

6 years agostat-util: unify code that checks whether something is a regular file
Lennart Poettering [Mon, 19 Feb 2018 17:01:05 +0000 (18:01 +0100)] 
stat-util: unify code that checks whether something is a regular file

Let's add a common implementation for regular file checks, that are
careful to return the right error code (EISDIR/EISLNK/EBADFD) when we
are encountering a wrong file node.

6 years agosd-journal: when picking up a new file, compare inode/device info with previous open...
Lennart Poettering [Mon, 19 Feb 2018 16:42:47 +0000 (17:42 +0100)] 
sd-journal: when picking up a new file, compare inode/device info with previous open file by same name

Let's make sure we aren't confused if a journal file is replaced by a
different one (for example due to rotation) if we are in a q overflow:
let's compare the inode/device information, and if it changed replace
any open file object as needed.

Fixes: #8198
6 years agosd-journal: rename add_file() → add_file_by_name()
Lennart Poettering [Mon, 19 Feb 2018 16:40:01 +0000 (17:40 +0100)] 
sd-journal: rename add_file() → add_file_by_name()

Let's be more careful with the naming, and indicate that the function
is about *named* journal files, and will validate the name as needed.
(in opposition to add_any_file() which doesn't care about names)

6 years agojournal-file: add O_NONBLOCK for paranoia when opening journal files
Lennart Poettering [Mon, 19 Feb 2018 16:37:47 +0000 (17:37 +0100)] 
journal-file: add O_NONBLOCK for paranoia when opening journal files

6 years agojournal-file: refuse opening non-regular journal files
Lennart Poettering [Mon, 19 Feb 2018 16:35:36 +0000 (17:35 +0100)] 
journal-file: refuse opening non-regular journal files

Let's check the file node type when we open/stat journal files: refuse
anything that is not a regular file...

6 years agocore: change KeyringMode= to "shared" by default for non-service units in the system...
Lennart Poettering [Tue, 20 Feb 2018 07:53:34 +0000 (08:53 +0100)] 
core: change KeyringMode= to "shared" by default for non-service units in the system manager (#8172)

Before this change all unit types would default to "private" in the
system service manager and "inherit" to in the user service manager.

With this change this is slightly altered: non-service units of the
system service manager are now run with KeyringMode=shared. This appears
to be the more appropriate choice as isolation is not as desirable for
mount tools, which regularly consume key material. After all mounts are
a shared resource themselves as they appear system-wide hence it makes a
lot of sense to share their key material too.

Fixes: #8159
6 years agohwdb: add axis override for Dell Inspiron MM061 touchpad (#8226)
Peter Hutterer [Tue, 20 Feb 2018 07:27:48 +0000 (17:27 +1000)] 
hwdb: add axis override for Dell Inspiron MM061 touchpad (#8226)

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

6 years agomeson: Multi-lines string should use ''' with meson (#8225)
Alexis Jeandet [Tue, 20 Feb 2018 01:36:41 +0000 (02:36 +0100)] 
meson: Multi-lines string should use ''' with meson (#8225)

This breaks with latest version of meson:
https://hephaistos.lpp.polytechnique.fr/teamcity/viewLog.html?buildId=11653&buildTypeId=mesonbuild_SystemdNightly&tab=buildLog&state=1059#_state=1059&guest=true

6 years agoMerge pull request #8223 from jwrdegoede/hwdb-keyboard-touchpad-toggle
Yu Watanabe [Tue, 20 Feb 2018 01:34:53 +0000 (10:34 +0900)] 
Merge pull request #8223 from jwrdegoede/hwdb-keyboard-touchpad-toggle

hwdb: 60-keyboard add mapping for the touchpad-toggle hotkey on 2 laptops

6 years agohwdb: Logitech M305 Wireless Optical Mouse dpi data (#8217)
Daniel Mouritzen [Tue, 20 Feb 2018 01:33:10 +0000 (02:33 +0100)] 
hwdb: Logitech M305 Wireless Optical Mouse dpi data (#8217)

Closes #8208

6 years agohwdb: Add quirk to fix mapping of T-bao Tbook air touchpad toggle key 8223/head
Hans de Goede [Mon, 19 Feb 2018 17:24:09 +0000 (18:24 +0100)] 
hwdb: Add quirk to fix mapping of T-bao Tbook air touchpad toggle key

The touchpad toggle key (Fn + Esc) on the T-bao Tbook air sends CTRL +
META + scancode 0x76 without this quirk. With this quirk it sends CTRL +
META + F21, with F21 mapping to XF86TouchpadToggle, which is what we want.

Note that the CTRL + META modifiers being send together with the F21 are
still somewhat unusual, userspace will need to be thought to deal with
this as there is nothing we can do about this at the hwdb level. Note at
least one other laptop also sends CTRL + META + F21 instead of just F21.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
6 years agohwdb: Add quirk to fix mapping of VIOS LTH17 touchpad toggle key
Hans de Goede [Mon, 19 Feb 2018 17:11:30 +0000 (18:11 +0100)] 
hwdb: Add quirk to fix mapping of VIOS LTH17 touchpad toggle key

The touchpad toggle key (Fn + F6) on the VIOS LTH17 sends CTRL + META + F24
without this quirk. With this quirk it sends CTRL + META + F21, with F21
mapping to XF86TouchpadToggle, which is what we want.

Note that the CTRL + META modifiers being send together with the F21 are
still somewhat unusual, userspace will need to be thought to deal with
this as there is nothing we can do about this at the hwdb level. Note at
least one other laptop also sends CTRL + META + F21 instead of just F21.

6 years agoMerge pull request #8199 from keszybz/small-things
Lennart Poettering [Mon, 19 Feb 2018 15:55:10 +0000 (16:55 +0100)] 
Merge pull request #8199 from keszybz/small-things

Sundry small cleanups

6 years agotests: add a simple test for utf8_n_codepoints() 8199/head
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 09:34:00 +0000 (10:34 +0100)] 
tests: add a simple test for utf8_n_codepoints()

6 years agoSome comment adjustments
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 09:27:47 +0000 (10:27 +0100)] 
Some comment adjustments

Follow up for review of #8184.

6 years agocore: drop obsolete comment
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 09:23:16 +0000 (10:23 +0100)] 
core: drop obsolete comment

https://github.com/systemd/systemd/pull/8125#pullrequestreview-96894581

6 years agopid1: do not initialize join_controllers by default
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 09:17:46 +0000 (10:17 +0100)] 
pid1: do not initialize join_controllers by default

We're moving towards unified cgroup hierarchy where this is not necessary.
This makes main.c a bit simpler.

6 years agoMove config_parse_join_controllers to shared, add test
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 08:56:29 +0000 (09:56 +0100)] 
Move config_parse_join_controllers to shared, add test

config_parse_join_controllers would free the destination argument on failure,
which is contrary to our normal style, where failed parsing has no effect.
Moving it to shared also allows a test to be added.

6 years agoshared/conf-parser: define a macro for the repeating argument set
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 08:29:57 +0000 (09:29 +0100)] 
shared/conf-parser: define a macro for the repeating argument set

The arguments have to be indentical everywhere, so let's use a macro to
make things more readable. But only in the headers, in the .c files let's
keep them verbose so that it's easy to see the argument list.

6 years agotest-process-util: one more (void)
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 06:03:13 +0000 (07:03 +0100)] 
test-process-util: one more (void)

6 years agoAdd some handling to remaining unlinkat calls
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 06:00:22 +0000 (07:00 +0100)] 
Add some handling to remaining unlinkat calls

Coverity now started warning about this ("Calling unlinkat without checking
return value (as is done elsewhere 12 out of 15 times).", and it is right:
most of the time we should at list print a log message so people can figure
out something is wrong when this happens.

v2:
- use warning level in journald too (this is unlikely to happen ever, so it
  should be safe to something that is visible by default).

6 years agobootspec: accept tab as the separataor in sd-boot config (#8165)
Yu Watanabe [Mon, 19 Feb 2018 13:26:01 +0000 (22:26 +0900)] 
bootspec: accept tab as the separataor in sd-boot config (#8165)

In the parse logic `line_get_key_value()` in sd-boot treats spaces
and tabs are valid spacing between key and value in the line.
So, let's use the same logic for `bootctl` and the others which read
sd-boot configs.

Fixes #8154.

6 years agomeson: apply defaults if /etc/login.defs doesn't exist
Caio Marcelo de Oliveira Filho [Mon, 19 Feb 2018 02:33:16 +0000 (18:33 -0800)] 
meson: apply defaults if /etc/login.defs doesn't exist

Apply defaults for system_{uid,gid}_max even if the /etc/login.defs file
doesn't exist (e.g. in Clear Linux with no changes).

awk returns an empty string in case the file doesn't exist, causing meson to
fail in to_int(). So set the default if output is empty. This makes the BEGIN{}
blocks unnecessary, so remove them.

6 years agojob: truncate unit description
Iago López Galeiras [Fri, 16 Feb 2018 13:32:44 +0000 (14:32 +0100)] 
job: truncate unit description

The comment above says we're truncating the string but that's not true,
an assert will fail in xsprintf if the description is longer than
LINE_MAX.

Let's use snprintf instead of xsprintf to make sure it's truncated.
We'll cast its result to void to tell static checkers we're fine with
truncation.

6 years agopo: update Serbian translation
Марко М. Костић (Marko M. Kostić) [Sun, 18 Feb 2018 21:04:22 +0000 (22:04 +0100)] 
po: update Serbian translation

6 years agomeson: use multiline string syntax (#8214)
Caio Marcelo de Oliveira Filho [Mon, 19 Feb 2018 09:37:19 +0000 (01:37 -0800)] 
meson: use multiline string syntax (#8214)

The single quote working with multiple lines is likely to be unintended. With
current versions of meson, it also causes error messages after it to report the
wrong line number. Use the documented syntax instead.

6 years agoMerge pull request #8202 from keszybz/avoid-msgmerge
Michael Biebl [Sun, 18 Feb 2018 18:56:50 +0000 (19:56 +0100)] 
Merge pull request #8202 from keszybz/avoid-msgmerge

Replace msgmerge use by gettext-domain= references

6 years agomeson: fix systemd-pot target when polkit-devel is not installed 8202/head
Zbigniew Jędrzejewski-Szmek [Sun, 18 Feb 2018 16:39:08 +0000 (17:39 +0100)] 
meson: fix systemd-pot target when polkit-devel is not installed

To successfully extract strings from our .policy files, gettext needs
polkit.{its,loc} files provided by policykit-devel. When that package is not
installed, systemd-pot would fail to extract strings:

[0/1] Running external command systemd-pot.
xgettext: warning: file 'src/core/org.freedesktop.systemd1.policy.in.in' extension 'policy' is unknown; will try C
xgettext: warning: file 'src/hostname/org.freedesktop.hostname1.policy.in' extension 'policy' is unknown; will try C
...

We now don't need the .its and .loc files for normal building, but they are
still useful when generating the .pot file, because that way we avoid the
dependency on sufficiently new polkit. We just need to tell i18n to pass their
location to xgettext.

6 years agol10n: Update POTFILES.in and POTFILES.skip
Michael Biebl [Fri, 16 Feb 2018 13:25:32 +0000 (14:25 +0100)] 
l10n: Update POTFILES.in and POTFILES.skip

We no longer use .in suffixes for .policy files.

Follow-up for commit 9b3cff199dd3827a9f2df9a7f5874d6ef18880f2 and
70886abbde59a45cfabe0769c0cdb3af1e5f7790.

6 years agotests: reset _found at the end of each iteration (#8195)
Evgeny Vereshchagin [Fri, 16 Feb 2018 13:26:26 +0000 (16:26 +0300)] 
tests: reset _found at the end of each iteration (#8195)

This makes `inst_rules` really print all rules it skips.

6 years agomkosi: remove intltool from deps
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 20:38:15 +0000 (21:38 +0100)] 
mkosi: remove intltool from deps

intltool is unnecessary since c81217920effddc93fb780cf8f9eb699d6fe1319.
But we still need gettext, because we use msgformat to generate .mo files.
(I tried to make meson depend on it, at least in Fedora:
 https://bugzilla.redhat.com/show_bug.cgi?id=1545926, but that didn't fly,
 and in Debian at least meson also has no dependency on the tools used by
 its i18n module, so we need to add our own dependency anyway.)

Closes #8192.

6 years agomeson: drop unnecessary "transformation" of policy files
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 11:48:55 +0000 (12:48 +0100)] 
meson: drop unnecessary "transformation" of policy files

Those files don't contain any @variables@, so the configuration step was just
copying them to build/. Let's avoid that, and fix their suffixes while at it.

6 years agomeson: drop double .in suffix for o.fd.systemd1.policy file
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 11:37:42 +0000 (12:37 +0100)] 
meson: drop double .in suffix for o.fd.systemd1.policy file

This file is now undergoing just one transformation, so drop the unnecessary
suffix.

6 years agoGettextize policy files
Gunnar Hjalmarsson [Thu, 15 Feb 2018 20:21:58 +0000 (21:21 +0100)] 
Gettextize policy files

* Don't merge translations into the files
* Add gettext-domain="systemd" to description and message

Closes #8162, replaces #8118.

6 years agologin,user-sessions: always warn when we fail to remove nologin file
Zbigniew Jędrzejewski-Szmek [Fri, 16 Feb 2018 05:58:33 +0000 (06:58 +0100)] 
login,user-sessions: always warn when we fail to remove nologin file

This usually is very annoying to users who then cannot log in, so
make sure we always warn if that happens (selinux, or whatever other reason).

This reverts a790812cb349c5cef95d1b4a20fc80ca08d3a145.

6 years agotest/test-functions: Debian/Ubuntu, now ship 95-dm-notify.rules, copy it
Dimitri John Ledkov [Wed, 14 Feb 2018 20:34:55 +0000 (20:34 +0000)] 
test/test-functions: Debian/Ubuntu, now ship 95-dm-notify.rules, copy it

This fixes cryptsetup tests on recent Ubuntu/Debian systems (current
development series).

Bug-Launchpad: https://launchpad.net/bugs/1749432

6 years agoMerge pull request #8175 from keszybz/gc-cleanup
Lennart Poettering [Thu, 15 Feb 2018 16:47:37 +0000 (17:47 +0100)] 
Merge pull request #8175 from keszybz/gc-cleanup

Garbage collection cleanup

6 years agoMerge pull request #8188 from keszybz/coverity-fixes
Lennart Poettering [Thu, 15 Feb 2018 16:23:03 +0000 (17:23 +0100)] 
Merge pull request #8188 from keszybz/coverity-fixes

Coverity fixes

6 years agoMerge pull request #8150 from poettering/memory-accounting-by-default
Lennart Poettering [Thu, 15 Feb 2018 16:22:36 +0000 (17:22 +0100)] 
Merge pull request #8150 from poettering/memory-accounting-by-default

pid1: turn memory accounting on by default now

6 years agoMerge pull request #8184 from poettering/color-ask-pw
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 16:14:59 +0000 (17:14 +0100)] 
Merge pull request #8184 from poettering/color-ask-pw

Trivial merge conflict resolved locally.

6 years agoMerge pull request #8125 from poettering/cgroups-migrate
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 15:15:45 +0000 (16:15 +0100)] 
Merge pull request #8125 from poettering/cgroups-migrate

Trivial merge conflict resolved locally.

6 years agomachined: change check_gc to may_gc everywhere 8175/head
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 12:15:45 +0000 (13:15 +0100)] 
machined: change check_gc to may_gc everywhere

6 years agologind: change check_gc to may_gc everywhere
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 12:14:35 +0000 (13:14 +0100)] 
logind: change check_gc to may_gc everywhere

6 years agopid1: also show gc status for jobs like we do for units
Zbigniew Jędrzejewski-Szmek [Tue, 13 Feb 2018 23:52:21 +0000 (00:52 +0100)] 
pid1: also show gc status for jobs like we do for units

6 years agopid1: rename job_check_gc to job_may_gc
Zbigniew Jędrzejewski-Szmek [Tue, 13 Feb 2018 23:39:06 +0000 (00:39 +0100)] 
pid1: rename job_check_gc to job_may_gc

The reasoning is the same as for unit_can_gc.

v2:
- rename can_gc to may_gc

6 years agopid1: properly remove references to the unit from gc queue during final cleanup
Zbigniew Jędrzejewski-Szmek [Tue, 13 Feb 2018 22:57:43 +0000 (23:57 +0100)] 
pid1: properly remove references to the unit from gc queue during final cleanup

When various references to the unit were dropped during cleanup in unit_free(),
add_to_gc_queue() could be called on this unit. If the unit was previously in
the gc queue (at the time when unit_free() was called on it), this wouldn't
matter, because it'd have in_gc_queue still set even though it was already
removed from the queue. But if it wasn't set, then the unit could be added to
the queue. Then after unit_free() would deallocate the unit, we would be left
with a dangling pointer in gc_queue.

A unit could be added to the gc queue in two places called from unit_free():
in the job_install calls, and in unit_ref_unset(). The first was OK, because
it was above the LIST_REMOVE(gc_queue,...) call, but the second was not, because
it was after that. Move the all LIST_REMOVE() calls down.

6 years agopid1: free basic unit information at the very end, before freeing the unit
Zbigniew Jędrzejewski-Szmek [Tue, 13 Feb 2018 23:01:05 +0000 (00:01 +0100)] 
pid1: free basic unit information at the very end, before freeing the unit

We would free stuff like the names of the unit first, and then recurse
into other structures to remove the unit from there. Technically this
was OK, since the code did not access the name, but this makes debugging
harder. And if any log messages are added in any of those functions, they
are likely to access u->id and such other basic information about the unit.
So let's move the removal of this "basic" information towards the end
of unit_free().

6 years agopid1: fix collection of cycles of units which reference one another
Zbigniew Jędrzejewski-Szmek [Tue, 13 Feb 2018 13:37:11 +0000 (14:37 +0100)] 
pid1: fix collection of cycles of units which reference one another

A .socket will reference a .service unit, by registering a UnitRef with the
.service unit. If this .service unit has the .socket unit listed in Wants or
Sockets or such, a cycle will be created. We would not free this cycle
properly, because we treated any unit with non-empty refs as uncollectable. To
solve this issue, treats refs with UnitRef in u->refs_by_target similarly to
the refs in u->dependencies, and check if the "other" unit is known to be
needed. If it is not needed, do not treat the reference from it as preventing
the unit we are looking at from being freed.

6 years agopid1: include the source unit in UnitRef
Zbigniew Jędrzejewski-Szmek [Tue, 13 Feb 2018 12:12:43 +0000 (13:12 +0100)] 
pid1: include the source unit in UnitRef

No functional change.

The source unit manages the reference. It allocates the UnitRef structure and
registers it in the target unit, and then the reference must be destroyed
before the source unit is destroyed. Thus, is should be OK to include the
pointer to the source unit, it should be live as long as the reference exists.

v2:
- rename refs to refs_by_target

6 years agopid1: rename unit_check_gc to unit_may_gc
Zbigniew Jędrzejewski-Szmek [Tue, 13 Feb 2018 09:50:13 +0000 (10:50 +0100)] 
pid1: rename unit_check_gc to unit_may_gc

"check" is unclear: what is true, what is false? Let's rename to "can_gc" and
revert the return value ("positive" values are easier to grok).

v2:
- rename from unit_can_gc to unit_may_gc

6 years agocoredump: accept hostname on command line (#8033)
Jakub Filak [Thu, 15 Feb 2018 11:12:46 +0000 (12:12 +0100)] 
coredump: accept hostname on command line (#8033)

This commint adds a new command line parameter to sytemd-coredump. The
parameter should be mappend to core_pattern's placeholder %h - hostname.

The field _HOSTNAME holds the name from the kernel's namespaces which might be
different then the one comming from process' namespaces.

It is true that the real hostname is usually available in the field
COREDUMP_ENVIRON (environment variables) but I believe it is more reliable to
use the value passed by kernel.

----

The length of iovec is no longer static and hence I corrected the declarations
of the functions set_iovec_field and set_iovec_field_free.

Thank you @yuwata and @poettering!

6 years agomeson: add -Dmemory-accounting-default=true|false 8150/head
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 10:43:08 +0000 (11:43 +0100)] 
meson: add -Dmemory-accounting-default=true|false

This makes it easy to set the default for distributions and users which want to
default to off because they primarily use older kernels.

6 years agoudevadm: fix fd leak on oom 8188/head
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 09:30:46 +0000 (10:30 +0100)] 
udevadm: fix fd leak on oom

Unlikely, but let's be correct.

CID #1386003.

6 years agodhcp6: fix uninitialized variable in returning from client_parse_message() (#8187)
Thomas Haller [Thu, 15 Feb 2018 09:49:55 +0000 (10:49 +0100)] 
dhcp6: fix uninitialized variable in returning from client_parse_message() (#8187)

Compiler warns about this with -Werror=maybe-uninitialized.

Fixes: 3bc424a3cc0bacc688ec2f4f93a5560fb4ca393b
6 years agonspawn: make sure we don't leak the fd in chase_symlinks_and_update
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 09:18:25 +0000 (10:18 +0100)] 
nspawn: make sure we don't leak the fd in chase_symlinks_and_update

No callers use CHASE_OPEN right now, but let's be defensive.

6 years agocore: move very long argument to a separate statement
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 09:10:01 +0000 (10:10 +0100)] 
core: move very long argument to a separate statement

I like compact, but this was a bit too much.

6 years agosd-dhcp6: fix check if serverid is set
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 08:37:44 +0000 (09:37 +0100)] 
sd-dhcp6: fix check if serverid is set

Ever since the initial implementation in 631bbe71298ec892f77f44f94feb612646fe6853,
client_parse_message() was supposed to check that the message contains exactly
one serverid. The check that no more than one is given was implemented
correctly, but the check that at least one is given was not. Simplify the whole
thing by making dhcp6_lease_get_serverid() return an error if the id is not
set, and do not require the arguments to be present if the contents of the id
are not needed.

6 years agolibsystemd-network: unitialized return value
Zbigniew Jędrzejewski-Szmek [Thu, 15 Feb 2018 08:20:36 +0000 (09:20 +0100)] 
libsystemd-network: unitialized return value

r will *usually* be set, but for some packets it might not.

CID #1385308.

6 years agomkosi: add pcre2 to our build deps, as we can now link to it 8184/head
Lennart Poettering [Wed, 14 Feb 2018 18:56:24 +0000 (19:56 +0100)] 
mkosi: add pcre2 to our build deps, as we can now link to it