Commit graph

13514 commits

Author SHA1 Message Date
Tom Gundersen 63348d13fa networkd: ndisc/dhcpv6 - handle starting running clients
The clients may be triggered to be started repeatedly without being stopped first,
simply swallow the error rather than failing the link.
2015-11-16 19:14:22 +01:00
David Herrmann 5cd6491b71 Merge pull request #1919 from martinpitt/master
siphash42: add tests with unaligned input pointers
2015-11-16 16:47:07 +01:00
David Herrmann f7eb988333 Merge pull request #1918 from dvdhrm/user3
login: allow re-using users (v3)
2015-11-16 16:28:25 +01:00
Martin Pitt 69b98e71b4 siphash42: add tests with unaligned input pointers
Add test case for calling siphash24 with unaligned input pointers, as we
commonly get with calling it on the result on basename() or similar.

This provides a test for PR #1916, rescued from the superseded PR #1911.

Thanks to Steve Langasek for the test!
2015-11-16 16:24:56 +01:00
David Herrmann 2f157acdae login: ignore JobRemoved of old jobs
If we requeue jobs, we are no longer interested in old jobs. Hence, we
better ignore any JobRemoved signals for old jobs and concentrate on our
replacements.
2015-11-16 16:15:42 +01:00
Tom Gundersen f5ed8d4a51 Merge pull request #1916 from zonque/align
siphash: alignment
2015-11-16 15:50:13 +01:00
David Herrmann 920a726221 Merge pull request #1915 from poettering/btrfs-root-subvol
tmpfiles: create subvolumes for "v", "q", and "Q" only if / is a subv…
2015-11-16 15:48:21 +01:00
David Herrmann 79ee4ad108 login: make sure to replace existing units
When queuing unit jobs, we should rather replace existing units than
fail. This is especially important when we queued a user-shutdown and a
new login is encountered. In this case, we better raplce the shutdown
jobs. systemd takes care of everything else.
2015-11-16 15:43:18 +01:00
David Herrmann a832ab6f99 login: fix re-use of users
If the last reference to a user is released, we queue stop-jobs for the
user-service and slice. Only once those are finished, we drop the
user-object. However, if a new session is opened before the user object is
fully dropped, we currently incorrectly re-use the object. This has the
effect, that we get stale sessions without a valid "systemd --user"
instance.

Fix this by properly allowing user_start() to be called, even if
user->stopping is true.
2015-11-16 15:34:41 +01:00
David Herrmann 090d92bd6f login: group static fields in "struct User"
Make sure to put static fields together in "struct User". This makes it
easier to figure out the lifetime of each field.
2015-11-16 15:34:41 +01:00
David Herrmann b690ef12b5 login: make user->service static
Just like user->slice, there is no reason to store the unit name in /run,
nor should we allocate it dynamically on job instantiation/removal. Just
keep it statically around at all times and rely on user->started ||
user->stopping to figure out whether the unit exists or not.
2015-11-16 15:34:41 +01:00
David Herrmann 157f50577f login: make user_new() and user_free() follow coding-style
Few changes to user_new() and user_free():
 - Use _cleanup_(user_freep) in constructor
 - return 'int' from user_new()
 - make user_free() deal with partially initialized objects
 - keep reverse-order in user_free() compared to user_new()
 - make user_free() return NULL
 - make user_free() accept NULL as no-op
2015-11-16 15:34:41 +01:00
David Herrmann 6230bf750a login: keep user->slice constant
Currently, we allocate user->slice when starting a slice, but we never
release it. This is incompatible if we want to re-use a user object once
it was stopped. Hence, make sure user->slice is allocated statically on
the user object and use "u->started || u->stopping" as an indication
whether the slice is actually available on pid1 or not.
2015-11-16 15:34:41 +01:00
David Herrmann f9e4283df3 login: simply XDG_RUNTIME_DIR management
Lets not pretend we support changing XDG_RUNTIME_DIR via logind state
files. There is no reason to ever write the string into /run, as we
allocate it statically based on the UID, anyway. Lets stop that and just
allocate the runtime_path in "struct User" at all times.

We keep writing it into the /run state to make sure pam_systemd of
previous installs can still read it. However, pam_systemd is now fixed to
allocate it statically as well, so we can safely remove that some time in
the future.

Last but not least: If software depends on systemd, they're more than free
to assume /run/user/$uid is their runtime dir. Lets not require sane
applications to query the environment to get their runtime dir. As long as
applications know their login-UID, they should be safe to deduce the
runtime dir.
2015-11-16 15:34:36 +01:00
Lennart Poettering 2904e949f2 tmpfiles: create subvolumes for "v", "q", and "Q" only if / is a subvolume
It's not a good idea to create subvolumes for parts of the OS tree (such
as /home, or /var) if the root directory is not a subvolume too. We
shouldn't assume control of "heavier" objects such as subvolumes, if the
originating object (the root directory) is a "light-weight" object, i.e.
a plain directory.

Effectively this means that chroot() environments that are run on a
plain directory do not have to deal with problems around systemd
creating subvolumes that cannot be removed with a simple "rm" anymore.
However, if the chroot manager creates a proper subvolume for such an
environment it will also get further subvolumes placed in there, under
the assumption that the manager understands the concept of subvolumes in
that case.
2015-11-16 15:25:42 +01:00
Martin Pitt dbe81cbd2a siphash24: change result argument to uint64_t
Change the "out" parameter from uint8_t[8] to uint64_t. On architectures which
enforce pointer alignment this fixes crashes when we previously cast an
unaligned array to uint64_t*, and on others this should at least improve
performance as the compiler now aligns these properly.

This also simplifies the code in most cases by getting rid of typecasts. The
only place which we can't change is struct duid's en.id, as that is _packed_
and public API, so we can't enforce alignment of the "id" field and have to
use memcpy instead.
2015-11-16 15:20:29 +01:00
Daniel Mack 8dd85afe76 siphash24: fix memory alignment
Use unaligned_read_le64() to access input buffer when reading complete
64-bit words.

This should fix memory traps on platforms with strict aliasing.
2015-11-16 15:19:23 +01:00
Daniel Mack 7f034e980d basic: add unaligned macros for little endian
Also add test code for that.
2015-11-16 15:13:33 +01:00
David Herrmann 44690833df Merge pull request #1886 from poettering/tasks-max
Enable TasksMax by default for all units
2015-11-16 15:09:55 +01:00
Martin Pitt 9b65fd9fa9 virt: sort #includes alphabetically
nitpick from PR #1910
2015-11-16 12:01:24 +01:00
David Herrmann f56e49a989 Merge pull request #1908 from phomes/network-memleak
network: dhcp6 - fix mem leak
2015-11-16 12:00:20 +01:00
David Herrmann d6ab08f622 Merge pull request #1906 from poettering/pid-check
machined,logind: be more careful when accepting PIDs and UIDs from clients
2015-11-16 11:59:21 +01:00
Lennart Poettering 541ec33075 nspawn: set TasksMax= for containers to 8192 by default 2015-11-16 11:58:04 +01:00
Lennart Poettering a5bc6e5450 logind: change default to UserTasksMax= to 4096 2015-11-16 11:58:04 +01:00
Lennart Poettering 9ded9cd14c core: enable TasksMax= for all services by default, and set it to 512
Also, enable TasksAccounting= for all services by default, too.

See:

http://lists.freedesktop.org/archives/systemd-devel/2015-November/035006.html
2015-11-16 11:57:48 +01:00
Martin Pitt 6970dcb4ef virt: add missing #includes
src/basic/virt.c: In function 'detect_vm_device_tree':
src/basic/virt.c:117:17: error: unknown type name '_cleanup_closedir_'
                 _cleanup_closedir_ DIR *dir = NULL;

src/basic/virt.c:128:17: error: implicit declaration of function 'FOREACH_DIRENT' [-Werror=implicit-function-declaration]
                 FOREACH_DIRENT(dent, dir, return -errno)
2015-11-16 08:04:24 +01:00
Thomas Hindoe Paaboel Andersen a2f46e8495 network: dhcp6 - fix mem leak
from 7a695d8e
CID#1338679
2015-11-15 23:10:28 +01:00
Lennart Poettering 06820eafdb machined,logind: be more careful when accepting PIDs and UIDs from clients
Always validate first before we start processing the data.
2015-11-15 22:00:47 +01:00
Evgeny Vereshchagin db260eedc2 firstboot: log on take_etc_passwd_lock error too 2015-11-15 18:30:26 +00:00
Thomas Hindoe Paaboel Andersen d986e364c4 install: don't mix state and type enums
from 0ec0deaa
2015-11-15 14:45:24 +01:00
Lennart Poettering 702d4e6f14 core: now that .snapshot unit are gone, we don't need the per-type .no_gc bool anymore 2015-11-13 19:50:52 +01:00
Lennart Poettering 700e2d63b7 core: simplify scope unit GC checking code a bit 2015-11-13 19:50:52 +01:00
Lennart Poettering 90558f3158 logind: add a new UserTasksMax= setting to logind.conf
This new setting configures the TasksMax= field for the slice objects we
create for each user.

This alters logind to create the slice unit as transient unit explicitly
instead of relying on implicit generation of slice units by simply
starting them. This also enables us to set a friendly description for
slice units that way.
2015-11-13 19:50:52 +01:00
Lennart Poettering 38599489e4 logind: don't assert if the slice is missing
After all, we don't actually really need the slice to work, it's just
nice to have it.
2015-11-13 19:50:52 +01:00
Lennart Poettering 17f62e9bd0 core: enable transient unit support for slice units 2015-11-13 19:50:52 +01:00
Lennart Poettering eb55ec9fec util-lib: when parsing time values, accept "M" as short for "month"
nginx defines an uppercase "M" that way (in contrast to the lowercase
"m" for "minute"), and it sounds like an OK logic to follow, so that we
understand a true superset of time values nginx understands.

http://nginx.org/en/docs/syntax.html
2015-11-13 19:50:52 +01:00
Lennart Poettering 08c77cf398 btrfs: properly handle the case when a subvol has no parent
Don't be confused by subvols without parent. This is after all how the
root subvol is set up.
2015-11-13 19:50:52 +01:00
Lennart Poettering 0af20ea2ee core: add new DefaultTasksMax= setting for system.conf
This allows initializing the TasksMax= setting of all units by default
to some fixed value, instead of leaving it at infinity as before.
2015-11-13 19:50:52 +01:00
Lennart Poettering ecee72e1b6 core: make sure DefaultLimitCPU= and DefaultLimitRTTIME= understand time units, too
We added this for the per-unit setting, hence let's enable this for the
global default settings too.
2015-11-13 19:50:52 +01:00
Kay Sievers df5d01df7b Merge pull request #1878 from hbrueckner/for-upstream
udev/path_id: improve and enhance bus detection for Linux on z Systems
2015-11-13 15:48:29 +01:00
Lennart Poettering b39e074c27 Merge pull request #1881 from michich/analyze-dot
analyze: dot graph missing Requisite, superfluous ConflictedBy
2015-11-13 15:30:15 +01:00
Tom Gundersen a56a2048f9 networkd: check explicit state rather than link->network
When deserializing we can now have an attached network without the various clients yet
having been configured. Hence, don't misused the link->network as a check to determine
if a link is ready to be used, but check the state explicitly.
2015-11-13 15:05:58 +01:00
Michal Schmidt fa4b687b63 analyze: do not draw ConflictedBy dependencies in dot graph
We already draw Conflicts. I see no reason for having every red line in
the graph duplicated in the opposite direction.
2015-11-13 15:01:56 +01:00
Tom Gundersen 3098562c92 networkd: dhcp6 - don't log about losing a lease we never had 2015-11-13 14:51:06 +01:00
Michal Schmidt 8901b40502 analyze: show Requisite dependencies in the dot graph again
We lost them a long time ago with commit 048ecf5b84.
2015-11-13 14:32:59 +01:00
Tom Gundersen cf0f970fe1 Merge pull request #1879 from poettering/networkd-forward
stop managing per-interface IP forwarding settings
2015-11-13 14:18:32 +01:00
Michal Schmidt 7152869f0a Merge pull request #1869 from poettering/kill-overridable
Remove support for RequiresOverridable= and RequisiteOverridable=
2015-11-13 14:04:34 +01:00
Lennart Poettering 765afd5c4d networkd: stop managing per-interface IP forwarding settings
As it turns out the kernel does not support per-interface IPv6 packet
forwarding controls (unlike as it does for IPv4), but only supports a
global option (#1597). Also, the current per-interface management of the
setting isn't really useful, as you want it to propagate to at least one
more interface than the one you configure it on. This created much grief
(#1411, #1808).

Hence, let's roll this logic back and simplify this again, so that we
can expose the same behaviour on IPv4 and IPv6 and things start to work
automatically again for most folks: if a network with this setting set
is set up we propagate the setting into the global setting, but this is
strictly one-way: we never reset it again, and we do nothing for network
interfaces where this setting is not enabled.

Fixes: #1808, #1597.
2015-11-13 13:02:50 +01:00
Lennart Poettering d68e2e59b3 networkd: rearrange checks when to write something into sysctl a bit
Move check whether ipv6 is available into link_ipv6_privacy_extensions()
to keep it as internal and early as possible.

Always check if there's a network attached to a link before we apply
sysctls. We do this for most of the sysctl functions already, with this
change we do it for all.
2015-11-13 13:02:50 +01:00
Lennart Poettering 66a6bd6897 networkd: fix a couple of format string types
We really should use %i for ints, and %u for unsigneds, and be careful
what we pick depending on the type we want to print.
2015-11-13 13:02:49 +01:00