summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* fs-util: remove comment about non-existing functionYu Watanabe2017-12-01
|
* fs-util: chase_symlinks(): remove unnecessary slash at the headYu Watanabe2017-12-01
| | | | | Before this, chase_symlinks("/../../foo/bar",...) returns //foo/bar. This removes the unnecessary slash at the head.
* *: fix some inconsistent control statement styleVito Caputo2017-12-01
|
* Add mkfs wrapper which first checks if the partition is emptyZbigniew Jędrzejewski-Szmek2017-11-26
|
* growfs: add support for resizing encrypted partitionsZbigniew Jędrzejewski-Szmek2017-11-21
|
* Add elogind-growfs toolZbigniew Jędrzejewski-Szmek2017-10-23
|
* test-mount-util: move test_path_is_mount_point hereZbigniew Jędrzejewski-Szmek2017-10-31
| | | | | | | path-util.c and mount-util.c are intertwined, but path_is_mount_point() is defined in mount-util.c. No functional difference.
* Fix SELinux labels in cgroup filesystem root directory (#7496)Krzysztof Nowicki2017-11-30
| | | | | | | | | | | | | | | When using SELinux with legacy cgroups the tmpfs on /sys/fs/cgroup is by default labelled as tmpfs_t. This label is also inherited by the "cpu" and "cpuacct" symbolic links. Unfortunately the policy expects them to be labelled as cgroup_t, which is used for all the actual cgroup filesystems. Failure to do so results in a stream of denials. This state cannot be fixed reliably when the cgroup filesystem structure is set-up as the SELinux policy is not yet loaded at this moment. It also cannot be fixed later as the root of the cgroup filesystem is remounted read-only. In order to fix it the root of the cgroup filesystem needs to be temporary remounted read-write, relabelled and remounted back read-only.
* fileio: document why fileio-label.c and fileio.c are two different modulesLennart Poettering2017-11-27
|
* logind: fix sysfs change trigger codeLennart Poettering2017-11-22
| | | | | We can't create files in sysfs, hence don't bother. Also if we ignore the return value, do so explicitly by casting to void.
* specifier: add helper for escaping '%' characters to avoid making them ↵Lennart Poettering2017-11-21
| | | | | | | subject for expansion This is ultimately just a wrapper around strreplace(), but it makes things a bit more self-descriptive.
* string-util: update strreplace() a bit, use GREEDY_REALLOC()Lennart Poettering2017-11-21
|
* Add set/hashmap helpers for non-trivial freeing and use where straighforwardZbigniew Jędrzejewski-Szmek2017-11-28
| | | | | | A macro is needed because otherwise we couldn't ensure type safety. Some simple tests are included. No functional change intended.
* cap-list: check range of numeric valueYu Watanabe2017-11-28
|
* alloc-util: coding style fixYu Watanabe2017-11-28
|
* test-process-util: add (void) cast to make coverity happyZbigniew Jędrzejewski-Szmek2017-11-27
| | | | | The intent is for the call to succeed only when privileged, so make that clear.
* sd-resolve: propagate timeouts in sd_resolve_wait() the same way as in ↵Lennart Poettering2017-11-27
| | | | | | | sd_bus_wait(): ETIMEDOUT Thankfully this is an internal API still, so we can mkae changes like this.
* logind: use the new FDSTOREREMOVE=1 sd_notify() messageLennart Poettering2017-11-13
| | | | | | | Let's explicitly tell PID 1 that we don't need an fd anymore, instead of relying exclusively on POLLERR/POLLHUP for it to be removed. Fixes: #6908
* logind: make sure we don't acces m->action_what if it's not initialized (#7475)Lennart Poettering2017-11-27
| | | | Fixes: #7466
* exec-util: initialize `new` before using it (#7471)Evgeny Vereshchagin2017-11-26
| | | | CID #1383004
* fileio: include sys/mman.hYu Watanabe2017-11-26
|
* core: warn about left-over processes in cgroup on unit startLennart Poettering2017-11-24
| | | | | | Now that we don't kill control processes anymore, let's at least warn about any processes left-over in the unit cgroup at the moment of starting the unit.
* unit: initialize bpf cgroup realization state properlyLennart Poettering2017-11-24
| | | | | | | | | | | | | | | | | | Before this patch, the bpf cgroup realization state was implicitly set to "NO", meaning that the bpf configuration was realized but was turned off. That means invalidation requests for the bpf stuff (which we issue in blanket fashion when doing a daemon reload) would actually later result in a us re-realizing the unit, under the assumption it was already realized once, even though in reality it never was realized before. This had the effect that after each daemon-reload we'd end up realizing *all* defined units, even the unloaded ones, populating cgroupfs with lots of unneeded empty cgroups. With this fix we properly set the realiazation state to "INVALIDATED", i.e. indicating the bpf stuff was never set up for the unit, and hence when we try to invalidate it later we won't do anything.
* cgroup: when dispatching the cgroup realization queue, check again if we ↵Lennart Poettering2017-11-24
| | | | | | | | | | | | | | | shall actually realize We add units to the cgroup realization queue when propagating realizing requests to sibling units, and when invalidating cgroup settings because some cgroup setting changed. In the time between where we add the unit to the queue until the cgroup is actually dispatched the unit's state might have changed however, so that the unit doesn't actually need to be realized anymore, for example because the unit went down. To handle that, check the unit state again, if realization makes sense. Redundant realization is usually not a problem, except when the unit is not actually running, hence check exactly for that.
* cgroup: drop unused parameter from functionLennart Poettering2017-11-24
|
* Replace use of snprintf with xsprintfDaniel Lockyer2017-11-24
|
* Replace free and reassignment with free_and_replaceDaniel Lockyer2017-11-24
|
* Replace free and return NULL with return mfreeDaniel Lockyer2017-11-24
|
* Replace free and nullify by mfreeDaniel Lockyer2017-11-24
|
* __attribute__((fallthrough)) only when -Wimplicit-fallthrough (#7448)Shawn Landden2017-11-24
| | | | | | | | | | | | | That is version 7 or greater https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/ Fix regression of https://github.com/elogind/elogind/pull/7389 82a27ba8217d09e4fef4c9550f8b733d174c5705 on older gccs bumping to re-run CI upstream FAIL timed out boot-smoke FAIL non-zero exit status 1
* mount-util: fix error propagation in fd_fdinfo_mnt_id()Lennart Poettering2017-11-23
|
* cgroup: downgrade the log level of "invocation id" messages to debug (#7422)Evgeny Vereshchagin2017-11-23
| | | | | Now that d3070fbdf6077d7d has been merged, these errors are not as critical as they used to be.
* udevd: use list.h instead of udev_list_nodeSimon Peeters2016-11-06
|
* networkd: introduce vxcan netdev. (#7150)Susant Sahani2017-11-22
| | | | | | | | Similar to the virtual ethernet driver veth, vxcan implements a local CAN traffic tunnel between two virtual CAN network devices. When creating a vxcan, two vxcan devices are created as pair When one end receives the packet it appears on its pair and vice versa. The vxcan can be used for cross namespace communication.
* cgroup: fix delegation on the unified hierarchyLennart Poettering2017-11-17
| | | | | | | | | | | | | | | | | | | | | Make sure to add the delegation mask to the mask of controllers we have to enable on our own unit. Do not claim it was a members mask, as such a logic would mean we'd collide with cgroupv2's "no processes on inner nodes policy". This change does the right thing: it means any controller enabled through Controllers= will be made available to subcrgoups of our unit, but the unit itself has to still enable it through cgroup.subtree_control (which it can since that file is delegated too) to be inherited further down. Or to say this differently: we only should manipulate cgroup.subtree_control ourselves for inner nodes (i.e. slices), and for leaves we need to provide a way to enable controllers in the slices above, but stay away from the cgroup's own cgroup.subtree_control — which is what this patch ensures. Fixes: #7355
* cgroup: properly determine cgroups zombie processes belong toLennart Poettering2017-11-17
| | | | | | When a process becomes a zombie its cgroup might be deleted. Let's add some minimal code to detect cases like this, so that we can still attribute this back to the original cgroup.
* tree-wide: adjust fall through comments so that gcc is happyShawn Landden2017-11-19
| | | | | | | | Distcc removes comments, making the comment silencing not work. I know there was a decision against a macro in commit ec251fe7d5bc24b5d38b0853bc5969f3a0ba06e2
* signal-util: use a slightly less likely to conflict variable name instead of 't'Lennart Poettering2017-11-14
|
* proc-cmdline: minor runlevel_to_target() coding style fixesLennart Poettering2017-10-27
| | | | | Let's not mix function calls and variable declarations, as well as assignments and comparison in one expression.
* hexdcoct: dump to stdout if FILE* is specified as NULLLennart Poettering2017-10-27
| | | | | We do a logic like that at various other places, let's do it here too, to make this as little surprising as possible.
* hexdecoct: slightly extend the unbase64mem() API and relatedLennart Poettering2017-10-27
| | | | | | | | | If the string length is specified as (size_t) -1, let's use that as indicator for determining the length on our own. This makes it slightlier shorter to invoke these APIs for a very common case. Also, do some minor other coding style updates, and add assert()s here and there.
* core: implement /run/elogind/units/-based path for passing unit info from ↵Lennart Poettering2017-11-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PID 1 to journald And let's make use of it to implement two new unit settings with it: 1. LogLevelMax= is a new per-unit setting that may be used to configure log priority filtering: set it to LogLevelMax=notice and only messages of level "notice" and lower (i.e. more important) will be processed, all others are dropped. 2. LogExtraFields= is a new per-unit setting for configuring per-unit journal fields, that are implicitly included in every log record generated by the unit's processes. It takes field/value pairs in the form of FOO=BAR. Also, related to this, one exisiting unit setting is ported to this new facility: 3. The invocation ID is now pulled from /run/elogind/units/ instead of cgroupfs xattrs. This substantially relaxes requirements of elogind on the kernel version and the privileges it runs with (specifically, cgroupfs xattrs are not available in containers, since they are stored in kernel memory, and hence are unsafe to permit to lesser privileged code). /run/elogind/units/ is a new directory, which contains a number of files and symlinks encoding the above information. PID 1 creates and manages these files, and journald reads them from there. Note that this is supposed to be a direct path between PID 1 and the journal only, due to the special runtime environment the journal runs in. Normally, today we shouldn't introduce new interfaces that (mis-)use a file system as IPC framework, and instead just an IPC system, but this is very hard to do between the journal and PID 1, as long as the IPC system is a subject PID 1 manages, and itself a client to the journal. This patch cleans up a couple of types used in journal code: specifically we switch to size_t for a couple of memory-sizing values, as size_t is the right choice for everything that is memory. Fixes: #4089 Fixes: #3041 Fixes: #4441
* core: fix message about detected memory hierarchyZbigniew Jędrzejewski-Szmek2017-11-15
| | | | Just the error check and message were wrong, otherwise the logic was OK.
* Use plural DelegateControllers= consistentlyZbigniew Jędrzejewski-Szmek2017-11-14
|
* logind: fix SetLinger to authorize by client's effective User IDAlan Jenkins2017-09-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SetLinger is authorized by the PolicyKit action "set-self-linger", if it is not passed an explicit UID. According to comments we were determining the default UID from the client's session. However, user processes e.g. which are run from a terminal emulator do not necessarily belong to a session scope unit. They may equally be started from the elogind user manager [1][2]. Actually the comment was wrong, and it would also have worked for processes started from the elogind user manager. Nevertheless it seems to involve fetching "augmented credentials" i.e. it's using a racy method, so we shouldn't have been authenticating based on it. We could change the default UID, but that raises issues especially for consistency between the methods. Instead we can just use the clients effective UID for authorization. This commit also fixes `loginctl enable-linger $USER` to match the docs that say it was equivalent to `loginctl enable-linger` (given that $USER matches the callers user and owner_uid). Previously, the former would not have suceeded for unpriviliged users in the default configuration. [1] It seems the main meaning of per-session scopes is tracking the PAM login process. Killing that provokes logind to revoke device access. Less circularly, killing it provokes getty to hangup the TTY. [2] User units may be started with an environment which includes XDG_SESSION_ID (presuambly GNOME does this?). Or not.
* loginctl: enable-linger does not need fallback to XDG_SESSION_IDAlan Jenkins2017-09-18
| | | | | | | To maintain consistency with `loginctl user-status`, drop the fallback to XDG_SESSION_ID for `loginctl enable-linger`. The fallback was unnecessary and also incorrect: it passed the numeric value of the session identifier as a UID value.
* logind: "self" objects which do not apply - return specific error messagesAlan Jenkins2017-10-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's confusing that the bus API has aliases like "session/self" that return an error based on ENXIO, when it also has methods that return e.g. NO_SESSION_FOR_PID for the same problem. The latter kind of error includes more specifically helpful messages. "user/self" is the odd one out; it returns a generic UnknownObject error when it is not applicable to the caller. It's not clear whether this was intentional, but at first I thought it was more correct. More specifically, user_object_find() was returning 0 for "user/self", in the same situations (more or less) where user_node_enumerator() was omitting "user/self". I thought that was a good idea, because returning e.g. -ENXIO instead suggested that there _is_ something specific on that path. And it could be confused with errors of the method being called. Therefore I suggested changing the enumerator, always admitting that there is a handler for the path "foo/self", but returning a specific error when queried. However this interacts poorly with tools like D-Feet or `busctl`. In either tool, looking at logind would show an error message, and then go on to omit "user/self" in the normal listing. These tools are very useful, so we don't want to interfere with them. I think we can change the error codes without causing problems. The self objects were not listed in the documentation. They have been suggested to other projects - but without reference to error reporting. "seat/self" is used by various Wayland compositors for VT switching, but they don't appear to reference specific errors. We _could_ insist on the link between enumeration and UnknownObject, and standardize on that as the error for the aliases. But I'm not aware of any practical complaints, that we returned an error from an object that didn't exist. Instead, let's unify the codepaths for "user/self" vs GetUserByPid(0) etc. We will return the most helpful error message we can think of, if the object does not exist. E.g. for "session/self", we might return an error that the caller does not belong to a session. If one of the compositors is ever simplified to use "session/self" in initialization, users would be able to trigger such errors (e.g. run `gnome-shell` inside gnome-terminal). The message text will most likely be logged. The user might not know what the "session" is, but at least we'll be pointing towards the right questions. I think it should also be clearer for development / debugging. Unifying the code paths is also slightly helpful for auditing / marking calls to sd_bus_creds_get_session() in subsequent commits.
* basic: remove redundant check (#7320)Topi Miettinen2017-11-13
| | | | | The check is redundant as the whole block is only evaluated if __IGNORE_pkey_mprotect is not defined. Change to #else.
* core: rework the Delegate= unit file setting to take a list of controller namesLennart Poettering2017-11-09
| | | | | | | | Previously it was not possible to select which controllers to enable for a unit where Delegate=yes was set, as all controllers were enabled. With this change, this is made configurable, and thus delegation units can pick specifically what they want to manage themselves, and what they don't care about.
* conf-parser: simplify things a bit by using strextend()Lennart Poettering2017-11-08
|