Commit Graph

17307 Commits

Author SHA1 Message Date
kib
2a4182c291 Apparently there are some popular programs around which assume that it
is safe to call pthread_mutex_init() on the same shared mutex several
times.  POSIX claims that the behaviour in this case is undefined.

Make this working by only allowing one caller to initialize the mutex.
Other callers either see already completed initialization and do
nothing, or busy-loop yielding while designated initializer finishes.
Also make the API requirements loose by initializing mutexes on other
pthread_mutex*() calls if they see uninitialized shared mutex.

Only mutexes provide the hack for now, but it could be also
implemented for other process shared primitives from libthr.

Reported and tested by:	"Oleg V. Nauman" <oleg@opentransfer.com>
Sponsored by:	The FreeBSD Foundation
2016-03-22 10:51:42 +00:00
jhb
6f8f2fe586 Fully handle size_t lengths in AIO requests.
First, update the return types of aio_return() and aio_waitcomplete() to
ssize_t.

POSIX requires aio_return() to return a ssize_t so that it can represent
all return values from read() and write().  aio_waitcomplete() should use
ssize_t for the same reason.

aio_return() has used ssize_t in <aio.h> since r31620 but the manpage and
system call entry were not updated.  aio_waitcomplete() has always
returned int.

Note that this does not require new system call stubs as this is
effectively only an API change in how the compiler interprets the return
value.

Second, allow aio_nbytes values up to IOSIZE_MAX instead of just INT_MAX.

aio_read/write should now honor the same length limits as normal read/write.

Third, use longs instead of ints in the aio_return() and aio_waitcomplete()
system call functions so that the 64-bit size_t in the in-kernel aiocb
isn't truncated to 32-bits before being copied out to userland or
being returned.

Finally, a simple test has been added to verify the bounds checking on the
maximum read size from a file.
2016-03-21 21:37:33 +00:00
ian
e88fb9c783 If the dhcp server delivers an interface-mtu option, parse it and store
the value in a new global intf_mtu for use by the application.

These changes were inspired by the patch provided by Robert Blayzor in
PR 187094, and will allow loader(8) to propagate the value to the kernel
along with the other nfs_diskless parms delivered via environment vars.
2016-03-21 14:58:12 +00:00
ian
d61783b1df Actually garbage collect the unused code, as mentioned in r297147, which
this change should have been part of.
2016-03-21 14:39:03 +00:00
ian
0e961a376e Garbage collect the bswap routines from libstand. The declaration was
wrapped in an i386 ifdef with a comment questioning their usefulness even
there.  It turns out they aren't referenced anywhere, but their presence
prevents using sys/endian.h in libstand code.

These days, sys/endian.h provides much better support for such things, using
compiler builtins and inline functions (and creating connections between
libstand code and header files from sys/ would not be breaking new ground).
2016-03-21 14:21:32 +00:00
kib
bdf946f966 Lock pshared_lock shared around fork, to ensure that the COW snapshot
of the pshared hash in child is consistent and can be safely used.

Reported and tested by:	"Oleg V. Nauman" <oleg@opentransfer.com>
Sponsored by:	The FreeBSD Foundation
2016-03-21 06:52:35 +00:00
kib
7c5b09c965 Provide more information on failing checks in mutex_assert_is_owned()
and mutex_assert_not_owned().  snprintf() use in this context should
be safe.

Sponsored by:	The FreeBSD Foundation
2016-03-21 06:48:11 +00:00
kib
1e240521d2 From libthr, remove special and strange code to set up session and
control terminal, activated when running with pid 1.  It is
application duty to handle this, and unsuspecting init replacements
which are linked with libthr would be broken by this.

The pre-resolving of getpid() is restored, just in case.

Reviewed by:	jilles
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
2016-03-21 06:46:16 +00:00
kib
9e847808a6 Implement process-shared spinlocks.
Sponsored by:	The FreeBSD Foundation
2016-03-21 06:40:54 +00:00
kib
c6b4a0f205 Fix typo.
MFC after:	3 days
2016-03-21 05:59:05 +00:00
grembo
9533d74078 Update fetch.1 and fetch.3 to reflect libfetch's actual use of CA bundles
Reviewed by:	wblock
Approved by:	wblock
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D5558
2016-03-19 11:55:21 +00:00
julian
f935438dcf Use the right argumant name
MFC after:	1 week
Sponsored by:	Panzura inc
2016-03-18 08:47:17 +00:00
jhibbits
63edcf6d58 Bump libdevinfo SHLIB_MAJOR, forgotten in r297000.
Spotted by:	bapt
2016-03-18 01:53:00 +00:00
sjg
4ebe624823 xo_config.h no longer in contrib, so -I's needed
PR:		/homes/sjg/commit-logs/freebsd/libxo/xo_config.diff
Reviewed by:	jkim
2016-03-17 04:21:57 +00:00
sjg
80ed67b94b We need libutil
and make it feasible to at least build the tests in situ
2016-03-17 00:37:04 +00:00
phil
1dac3be00b Move generated file from contrib to build directory.
Reviewed by:	obrien
Approved by:	sjg
2016-03-16 23:50:41 +00:00
emaste
354e386908 libc: don't build compat functions if building WITHOUT_SYMVER
WITHOUT_SYMVER necessarily implies building a system without symver
backwards compatability.

Sponsored by:	The FreeBSD Foundation
2016-03-15 19:26:32 +00:00
imp
4e2d26ce1b Use the newly minted Makefile.libcompat to implement libsoft libraries
for the armv6 ABI switch. This also make WITH_LIBSOFT functional on
the arm platform. As a transition thing, this seems to work even
without switching the ABI (we basically build the same libraries
twice when MK_LIBSOFT=yes until the ABI cut over next
month). MK_LIBSOFT remains default no.
2016-03-12 23:25:05 +00:00
kib
c259148074 Fix handling of umtxp resource limit in sh(1)/ulimit(1), limits(1), add
login.conf(5) support.

Reviewed by:	jilles
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D5610
2016-03-12 14:54:34 +00:00
jhb
8313320e6e Remove Symbol.map entries for old AIO system calls for FreeBSD 6 compat.
These entries should have never been present since they only exist for
compat with FreeBSD 6.x (and older) binaries.  This was missed in r296572.
Technically this breaks the ABI by removing versioned symbols.  However,
no binaries should be linked against these symbols.  No release has
shipped with a header that contained a prototype for these functions.

Reviewed by:	kib
Differential Revision:	https://reviews.freebsd.org/D5615
2016-03-12 07:13:20 +00:00
bdrewery
2d30f7a0c5 DIRDEPS_BUILD: Update dependencies.
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:59 +00:00
bdrewery
c0ff0c5cb0 Add missing CLEANFILES.
MFC after:	1 week
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:56 +00:00
bdrewery
efd5b82a19 Remove bogus .ORDER.
This is not SUBDIR_PARALLEL and if it were this .ORDER would not work
since the targets are <target>_subdir_<subdir> not <subdir>.

MFC after:	1 week
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:42 +00:00
jhibbits
23ec6e34dc Add to CFLAGS, rather than replacing.
This allows additional CFLAGS, as set in bsd.cpu.mk, to go through.
2016-03-11 20:04:32 +00:00
des
3c7ee78e6c Not ready for level 6 yet due to -Wredundant-decls. 2016-03-11 14:47:14 +00:00
des
e784032209 Define __bounded__ to fix the gcc build. While there, raise WARNS. 2016-03-11 11:38:31 +00:00
bdrewery
7d18428871 Use the new bmake .dinclude feature to make these safe.
At least FAST_DEPEND won't even run 'make depend', so the code was
potentially broken with FAST_DEPEND anyhow.  The .dinclude directive
will ignore missing files rather than make them be fatal.

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 04:17:39 +00:00
des
bb6f58c772 Upgrade to OpenSSH 7.2p2. 2016-03-11 00:15:29 +00:00
bdrewery
aab40fdc3d DIRDEPS_BUILD: Connect MK_TESTS.
Sponsored by:	EMC / Isilon Storage Division
2016-03-09 22:46:01 +00:00
bdrewery
48a437b4b0 Fix and connect setjmp test.
Sponsored by:	EMC / Isilon Storage Division
2016-03-09 22:45:04 +00:00
trasz
a4277f9c74 Fix spelling of MAXNAMLEN.
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-03-09 13:45:03 +00:00
bdrewery
ca7bcc42dd DIRDEPS_BUILD: Update clang dependencies after r296417.
Sponsored by:	EMC / Isilon Storage Division
2016-03-08 21:26:44 +00:00
emaste
59e6727d40 libc/{i386,amd64}: Do not export .cerror when building WITHOUT_SYMVER
Further to r240152 (i386) and r240178 (amd64), hide the .cerror symbol
so that it is not exported if symbol versioning is not in use.  Without
this change WITHOUT_SYMVER libc contains .text relocations for .cerror,
as described in LLVM PR 26813 (http://llvm.org/pr26813).

This is a no-op for the regular build as the symbol version script
already controls .cerror visibility.

PR:		207712
Submitted by:	Rafael Espíndola
Reviewed by:	jilles, kib
Differential Revision:	https://reviews.freebsd.org/D5571
2016-03-08 00:09:34 +00:00
pfg
6f5b3c1fa3 Revert r296175
Undo update of libedit 2016-02-27

Something in libedit appears to be causing breakage in lldb38.
The changes are not generally huge but they are suficient to
to justify reverting for now.

Reported by:	novel, bapt
2016-03-06 21:32:54 +00:00
jilles
6e035b8117 libc: Add some tests for memcmp(). 2016-03-06 18:41:48 +00:00
lidl
297e6725d8 Allow O_CLOEXEC to be used in dbopen() flags
There is also a small portability crutch, also present in NetBSD,
to allow compiling on a system that doesn't define O_CLOEXEC.

Approved by:	rpaulo (mentor)
Obtained from:	NetBSD (r1.17, r1.18)
Differential Revision:	https://reviews.freebsd.org/D5549
2016-03-06 04:38:08 +00:00
dim
b89064c4eb Merge ^/head r296369 through r296409. 2016-03-05 15:34:54 +00:00
bdrewery
3c3decdda8 Revert r296395.
This mistakenly removed the SUBDIR_PARALLEL but even worse is that the install
(and build) order is not correct due to the lack of SUBDIR_DEPEND on the
most critical libraries.  The only reason they build correctly now is because
buildworld's 'make libraries' orders them properly.

Pointyhat to:	bdrewery
Sponsored by:	EMC / Isilon Storage Division
2016-03-05 05:39:59 +00:00
pfg
52fe23453a Stray tabs and spaces.
No functional change.
2016-03-05 01:17:23 +00:00
bdrewery
bf772a5fa8 Parallel installation has been safe here since r267511 added SUBDIR_DEPEND.
Sponsored by:	EMC / Isilon Storage Division
2016-03-04 22:36:42 +00:00
pfg
6ed428b4ed Work around aliasing issues detected in modern GCC.
Avoid casting gymnastics that lead to pointer aliasing by introducing an
inline function as done in NetBSD (but without #if0'd WIP code).

Obtained from:	NetBSD (CVS Rev. 1.24, 1.25)
2016-03-04 15:30:41 +00:00
dim
9ac7ec8827 Merge ^/head r296007 through r296368. 2016-03-03 23:15:46 +00:00
dim
0065f9e131 Update llvm and clang to 3.8.0 release. 2016-03-03 22:50:52 +00:00
pfg
0e774f6016 mbtowc(3): set errno to EILSEQ if an incomplete character is passed.
According to POSIX, The mbtowc() function shall fail if:
[EILSEQ] An invalid character sequence is detected.

Reviewed by:		bapt
Differential Revision:	https://reviews.freebsd.org/D5496

Obtained from:	OpenBSD (Ingo Schwarze)
MFC after:	1 month
2016-03-01 19:15:34 +00:00
kib
ac7a1d6753 Add two comments explaining the fine points of the hash
implementation.

Reviewed by:	emaste
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D5490
2016-03-01 15:21:01 +00:00
trasz
066348e6cd Connect pmc.haswellxeon(3) to the build; looks like it was missed in r279829.
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-03-01 11:34:44 +00:00
jasone
ac01d0e42d Update jemalloc to 4.1.0.
Add missing Symbol.map entry for __aligned_alloc.

Add weak-->strong symbol binding for
{malloc_stats_print,mallctl,mallctlnametomib,mallctlbymib} -->
{__malloc_stats_print,__mallctl,__mallctlnametomib,__mallctlbymib}.  These
bindings complete the set necessary to allow applications to replace all
malloc-related symbols.
2016-02-29 19:10:32 +00:00
trasz
5f758d0d5b errno(3) -> errno(2)
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:34:54 +00:00
trasz
4f6959f72d kenv(8) -> kenv(1)
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:22:34 +00:00
trasz
3835e90401 Fix typo.
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:20:37 +00:00