Commit Graph

587 Commits

Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek
00a8cf7763 basic/copy: use sendfile smarter
We called sendfile with 16kb (a.k.a. COPY_BUFFER_SIZE) as the maximum
number of bytes to copy. This seems rather inefficient, especially with
large files. Instead, call sendfile with a "large" maximum.

What "large" max means is a bit tricky: current file offset + max
must fit in loff_t. This means that as we call sendfile more than once,
we have to lower the max size.

With this patch, test-copy calls sendfile twice, e.g.:
sendfile(4, 3, NULL, 9223372036854775807) = 738760
sendfile(4, 3, NULL, 9223372036854037047) = 0
The second call is necessary to determine EOF.
2016-03-15 14:54:27 -04:00
Zbigniew Jędrzejewski-Szmek
825546ef76 socket_address_listen: do not rely on errno (2)
We'd still use the invalid errno for a return value. Rework
the code to simply return the right error right away.
2016-03-10 09:24:08 -05:00
Petr Lautrbach
a0c9496cc8 socket_address_listen - do not rely on errno
Currently socket_address_listen() calls mac_selinux_bind() to bind a UNIX
socket and checks its return value and errno for EADDRINUSE. This is not
correct. When there's an SELinux context change made for the new socket,
bind() is not the last function called in mac_selinux_bind(). In that
case the last call is setfscreatecon() from libselinux which can change
errno as it uses access() to check if /proc/thread-self is available.
It fails on kernels before 3.17 and errno is set to ENOENT.

It's safe to check only the return value at it's set to -errno.
2016-03-10 10:34:37 +01:00
Lennart Poettering
04c760d2fe Merge pull request #2781 from keszybz/selinux-and-warnings
Selinux loading fix and warning cleanups
2016-03-03 17:46:56 +01:00
Zbigniew Jędrzejewski-Szmek
6307c39b94 Redefine 32bit time_t format to signed
It seems that it is signed both on i386 and arm.

Avoids a stupid gcc warning on arm:

src/udev/udevadm-monitor.c: In function ‘print_device’:
src/udev/udevadm-monitor.c:44:16: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 3 has type ‘__time_t {aka long int}’ [-Wformat=]
         printf("%-6s[%"PRI_TIME".%06ld] %-8s %s (%s)\n",
                ^
2016-03-02 10:42:28 -05:00
Zbigniew Jędrzejewski-Szmek
5c5433ad32 selinux: use raw variants of security_compute_create and setfscreatecon
As suggested by Evgeny Vereshchagin as a follow up for
https://github.com/systemd/systemd/pull/2781#issuecomment-191043402.
2016-03-02 10:42:27 -05:00
Zbigniew Jędrzejewski-Szmek
c3dacc8bbf selinux: always try to load the full selinux db
https://github.com/systemd/systemd/pull/2508#issuecomment-190901170
Maybe fixes https://bugzilla.redhat.com/show_bug.cgi?id=1308771.
2016-03-01 20:39:30 -05:00
Alexander Kuleshov
c4b6915670 tree-wide: no need to pass excess flags to open()/openat() if O_PATH is passed
As described in the documentation:

When O_PATH is specified in flags, flag bits other than O_CLOEXEC,
O_DIRECTORY, and O_NOFOLLOW are ignored.

So, we can remove unnecessary flags in a case when O_PATH is passed
to the open() or openat().
2016-03-02 00:42:49 +06:00
Zbigniew Jędrzejewski-Szmek
6014237390 Merge pull request #2702 from poettering/resolved-iterate-fix
resolved iteration fix
2016-02-29 23:18:16 -05:00
Lennart Poettering
2e8294bc20 Merge pull request #2763 from tblume/shorten-hostname-before-removing-dots
shorten hostname before checking for trailing dot
2016-02-29 16:05:48 +01:00
Lennart Poettering
0522e11f59 Merge pull request #2756 from thom311/master
core: avoid compiler warning when compiling with -fexceptions
2016-02-29 16:03:32 +01:00
Thomas Blume
46e1a22781 shorten hostname before checking for trailing dot
Shortening can lead to a hostname that has a trailing dot.
Therefore it should be done before checking from trailing dots.
2016-02-29 10:19:01 +01:00
Thomas Haller
3587161ade core: avoid compiler warning when compiling with -fexceptions
Initialize auto variables with cleanup attribute, otherwise we
get a compiler warning with -fexceptions.

    ./configure CFLAGS='-Wmaybe-uninitialized -fexceptions -O2'
2016-02-27 13:40:50 +01:00
Martin Pitt
35f7216f96 clock-util: be more tolerant in parsing /etc/adjtime
As we default to "hardware clock is in UTC" if /etc/adjtime is not present, it
also makes sense to have that default if /etc/adjtime contains only one or two
lines.

Drop the "gibberish" test case, as this was just EIO because of not containing
three lines, which is already contained in other tests. clock_is_localtime()
never actually validated the format of the first two lines, and there is little
point in doing that.

This addresses the reading half of issue #2638.
2016-02-26 12:33:41 +01:00
Martin Pitt
6369641d6f clock-util: make clock_is_localtime() testable and add initial tests
Add path argument to clock_is_localtime() and default to "/etc/adjtime" if it's
NULL. This makes the function testable.

Add test-clock: initial test cases for some scenarios, using a temporary file.
This also checks the behaviour with a NULL (i. e. the system's /etc/adjtime)
file.
2016-02-26 11:28:49 +01:00
Torstein Husebø
96d4901149 treewide: fix typos and then/that use 2016-02-24 11:56:11 +01:00
Zbigniew Jędrzejewski-Szmek
03e6b71c06 Merge pull request #2724 from vcaputo/minor-formatting-cleanups
tree-wide: minor formatting inconsistency cleanups
2016-02-23 18:48:37 -05:00
Vito Caputo
9ed794a32d tree-wide: minor formatting inconsistency cleanups 2016-02-23 14:20:34 -08:00
Zbigniew Jędrzejewski-Szmek
703b7ccf41 Merge pull request #2639 from nafets227/master
Bugfix set virt=none when running on XEN Dom0
2016-02-23 17:12:40 -05:00
Stefan Schallenberg aka nafets227
3f61278b56 basic: Bugfix Detect XEN Dom0 as no virtualization
When running in XEN Dom0 the virtualization check:
1) detect_xen returns HYPERVISOR_NONE so next checks are executed
2) /proc/sys/hypervisor detects a XEN hypervisor
   it is lacking the special Dom0 detection as in detect_xen

With this patch, at the end of all virtualization checks we double-check if running in XEN Dom0 or DomU.
2016-02-23 22:32:16 +01:00
Stefan Schallenberg aka nafets227
9f63a08d99 basic: Debug-logging of Virtualisation detection
print out every single detection executed and its result.
2016-02-23 22:32:06 +01:00
Thomas Hindoe Paaboel Andersen
7c9337dae8 basic: mark unused variable as such 2016-02-23 20:40:51 +01:00
Lennart Poettering
c550f7a9b8 Merge pull request #2664 from zonque/bootchart-removal
Remove systemd-bootchart
2016-02-23 20:27:59 +01:00
Lennart Poettering
0ab0c01490 Merge pull request #2717 from keszybz/networkctl-prettification
Networkctl prettification
2016-02-23 16:54:52 +01:00
Zbigniew Jędrzejewski-Szmek
6b0132e4e7 basic: simplify ether_addr_is_null 2016-02-23 08:50:49 -05:00
Zbigniew Jędrzejewski-Szmek
953d28cc21 Fix two typos 2016-02-23 08:48:22 -05:00
Daniel Mack
4c2bb6b3b3 architecture.h: remove PROC_CPUINFO_MODEL
This was only needed for bootchart, so it can go now.
2016-02-23 13:31:28 +01:00
Martin Pitt
a9ae070941 Merge pull request #2709 from vcaputo/normalize_inc_dec_usage
tree-wide: make ++/-- usage consistent WRT spacing
2016-02-23 08:45:54 +01:00
Vito Caputo
313cefa1d9 tree-wide: make ++/-- usage consistent WRT spacing
Throughout the tree there's spurious use of spaces separating ++ and --
operators from their respective operands.  Make ++ and -- operator
consistent with the majority of existing uses; discard the spaces.
2016-02-22 20:32:04 -08:00
Lennart Poettering
35aa04e9ed resolved: fix notification iteration logic when transactions are completed
When a transaction is complete, and we notify its owners, make sure we deal
correctly with the requesters removing themselves from the list of owners while
we continue iterating.

This was previously already dealt with with transactions that require other
transactions for DNSSEC purposes, fix this for other possibly transaction
owners too now.

Since iterating through "Set" objects is not safe regarding removal of entries
from it, rework the logic to use two Sets, and move each entry we notified from
one set to the other set before we dispatch the notification. This move operation
requires no additional memory, and enables us to ensure that we don't notify
any object twice.

Fixes: #2676
2016-02-22 23:24:47 +01:00
Lennart Poettering
1a39bc8c65 hashmap: use void* and uint8_t* for generic pointers
As suggested by CODING_STYLE we should use "void*" as type for generic memory,
and uint8_t* for generic bytes. Hence use that instead of "char*", which should
really be used only for strings these days.
2016-02-22 23:24:47 +01:00
Lennart Poettering
0c0fea07b8 util-lib: simplify personality() string matching 2016-02-22 23:23:06 +01:00
Lennart Poettering
d5b687e7c2 virt: make sure we don't ignore some errors 2016-02-22 23:23:06 +01:00
Lennart Poettering
f2d1736c60 util-lib: support various ppc archs in personality logic 2016-02-22 23:23:06 +01:00
Lennart Poettering
6e5f1b5742 util-lib: use the architecture ids from architecture.h for personalities
We have this ids, hence let's use them universally.
2016-02-22 23:23:06 +01:00
Lennart Poettering
0f9ae7d73d build-sys: move shared/architecture.[ch] into basic/
After all, it is pretty generic, has no external deps besides libc, and is very
similar to virt.[ch] which is also in basic/
2016-02-22 23:23:06 +01:00
Tom Gundersen
7c7c0cbe64 Merge pull request #2685 from poettering/lldp-fixes2
lldp fixes, second iteration
2016-02-22 17:38:34 +01:00
Lennart Poettering
a4ae7f1d73 Merge pull request #2695 from mustrumr/fix-calendarspec-skip
calendarspec: fix find_next skipping times
2016-02-22 16:16:05 +01:00
Lennart Poettering
3535ed5949 Merge pull request #2694 from zonque/proxyarp-missing
missing.h: Explicitly check for IFLA_BRPORT_PROXYARP
2016-02-22 14:33:27 +01:00
Hristo Venev
a022d76e6a calendarspec: fix find_next skipping times
reset usec when bumping hours/minutes
2016-02-22 08:02:48 -05:00
Daniel Mack
26c34ab4ee missing.h: Explicitly check for IFLA_BRPORT_PROXYARP
RHEL explicitly disables IFLA_BRPORT_PROXYARP by renaming the enum value.

In order to support unpatched builds, we have two options:

a) redefine the enum value through missing.h and ignore the fact that it
   is really unsupported, or

b) omit that enum value on rtnl_prot_info_bridge_port_types[]

As we are not actually using this netlink type anywhere, and because it
is only hooked up for the sake of completeness, this patch opts for the
former.
2016-02-22 13:22:30 +01:00
Zbigniew Jędrzejewski-Szmek
493070f3dc Merge pull request #2688 from poettering/calendar-fix-2678
A fix for #2678
2016-02-21 21:29:41 -05:00
Lennart Poettering
e308ddcae2 util-lib: fix returned error code
Make sure we propagate errors properly.
2016-02-21 23:27:20 +01:00
Lennart Poettering
ea3894c1ba util-lib: add (void) cast to indicate that we don't care about the normalization success
After all, we verify that every calendar part is not out of bounds later on,
and it's fully OK if the normalization has no effect.
2016-02-21 23:25:38 +01:00
Lennart Poettering
8e1ad1eaf7 networkd: add basic LLDP transmission support
Let's add some minimalistic LLDP sender support. The idea is that this is
either on or off, and all fields determined automatically rather than
configured explicitly.
2016-02-21 20:58:59 +01:00
Lennart Poettering
b553a6b13c sd-lldp: filter out LLDP messages coming from our own MAC address
Let's not get confused should we be connected to some bridge that mirrors back
our packets.
2016-02-21 20:40:58 +01:00
Zbigniew Jędrzejewski-Szmek
a2daa2f075 time-util: check for overflow in conversion from ts to nsec_t
CID #1320855.
2016-02-20 19:37:10 -05:00
Lennart Poettering
0ef6f45425 tree-wide: place #pragma once at the same place everywhere
Usually, we place the #pragma once before the copyright blurb in header files,
but in a few cases we didn't. Move those around, so that we do the same thing
everywhere.
2016-02-20 22:42:29 +01:00
Lennart Poettering
43a6a52efe sd-lldp: move ETHERTYPE_LLDP to missing.h
After all, most ETHERTYPE variables are defined in the system headers, hence
define these where we defined all other fill-ins for system headers.
2016-02-20 22:42:29 +01:00
Zbigniew Jędrzejewski-Szmek
cde0cf28a2 Merge pull request #2666 from keszybz/coverity-fixes
Coverity fixes
2016-02-19 15:18:40 -05:00