Commit Graph

19215 Commits

Author SHA1 Message Date
mckusick
3ee5b3f53d In the C library, the setting up of the group array by various
utilities is done by calling gr_addgid() for each group to be
added (usually found by traversing /etc/group) then calling the
setgroups() system call after the group set has been created.
The gr_addgid() function (helpfully?) deduplicates the addition
of group members. So, if you call it to add a group member that
already exists, it is just dropped. Because group[0] is the
effective group-ID and is over-written when a setgid program
is run, The value in group[0] is usually duplicated so that
group value is not lost when a setgid program is run.

Historically this happened because the group value indicated
in the password file also appears in /etc/group (e.g., if you
are group staff in the password file, you will also appear in
the staff line in /etc/group). But, with the addition of the
deduplication, the attempt to add group staff was lost because
it already appeared in group[0]. So, the fix is to deduplicate
starting from group[1] which allows a duplicate of the entry in
group[0], but not in later entries.

There is some confusion about the setgroups system call because in
BSD it has (always) set the entire group including the egid group
(in group[0]). However, in Linux, it skips over group[0] and starts
setting from group[1]. See this comment from linux_setgroups:

      /*
       * cr_groups[0] holds egid. Setting the whole set from
       * the supplied set will cause egid to be changed too.
       * Keep cr_groups[0] unchanged to prevent that.
       */

To make it clear what the BSD setgroups system call does, I
added the following paragraph to the setgroups(2) manual page:

   The first entry of the group array (gidset[0]) is used as the effective
   group-ID for the process.  This entry is over-written when a setgid
   program is run.  To avoid losing access to the privileges of the
   gidset[0] entry, it should be duplicated later in the group array.
   By convention, this happens because the group value indicated in the
   password file also appears in /etc/group.  The group value in the
   password file is placed in gidset[0] and that value then gets added a
   second time when the /etc/group file is scanned to create the group set.

Reported by: Paul McMath  paulm at tetrardus.net
Reviewed by: kib
MFC after:   2 weeks
2018-01-23 22:18:45 +00:00
asomers
9c6971c4d4 mlock(2): correct documentation for error conditions.
The man page is years out of date regarding errors. Our implementation _does_
allow unaligned addresses, and it _does_not_ check for negative lengths,
because the length is unsigned. It checks for overflow instead.

Update the tests accordingly.

Reviewed by:	bcr
MFC after:	3 weeks
Differential Revision:	https://reviews.freebsd.org/D13826
2018-01-22 21:45:54 +00:00
kevans
66655bdfc8 libregex: Add a symbol map
kib points out that trying to re-use symbol versioning from libc is dirty
and wrong. The implementation in libregex is incompatible by design with the
implementation in libc. Using the symbol versions from libc can and likely
will cause confusions for linkers and bring unexpected behavior for
consumers that unwillingly (transitively) link against libregex.

Reported by:	kib
2018-01-22 18:40:19 +00:00
kevans
34622b1280 libregex: Drop WARNS to 2 to match libc
It's become clear that my armv7 builds didn't catch all of the warnings that
other builds are picking up, drop WARNS to 2 to match libc until they're all
caught.
2018-01-22 03:12:26 +00:00
kevans
90184b5f8a Add missing patch from r328240
regcomp uses some libc internal collation bits that are not available in the
libregex context. It's easy enough to bring in the needed parts that can
work in a libregex world, so do so.

Pointy hat to:	me
2018-01-22 02:58:33 +00:00
kevans
8d872ae8f8 Add libregex, connect it to the build
libregex is a regex(3) implementation intended to feature GNU extensions and
any other non-POSIX compliant extensions that are deemed worthy.

These extensions are separated out into a separate library for the sake of
not cluttering up libc further with them as well as not deteriorating the
speed (or lack thereof) of the libc implementation.

libregex is implemented as a build of the libc implementation with LIBREGEX
defined to distinguish this from a libc build. The reasons for
implementation like this are two-fold:

1.) Maintenance- This reduces the overhead induced by adding yet another
regex implementation to base.

2.) Ease of use- Flipping on GNU extensions will be as simple as linking
against libregex, and POSIX-compliant compilations can be guaranteed with a
REG_POSIX cflag that should be ignored by libc/regex and disables extensions
in libregex. It is also easier to keep REG_POSIX sane and POSIX pure when
implemented in this fashion.

Tests are added for future functionality, but left disconnected for the time
being while other testing is done.

Reviewed by:	cem (previous version)
Differential Revision:	https://reviews.freebsd.org/D12934
2018-01-22 02:44:41 +00:00
eadler
17f66bff7b iconv: adding missing break
break is probably intended and correct,
but has no correctness implications due to is94 => is96

Reviewed by:	cem, jilles
Reported by:	swildner@DragonFlyBSD.org
MFC After:	1 week
2018-01-21 21:09:08 +00:00
kevans
e0d9650001 regex(3): Resolve issues with higher WARNS levels
libc is set for WARNS=2, but the incoming libregex will use WARNS=6.
Sprinkle some casts and (void)bc's to alleviate the warnings that come along
with the higher WARNS level.

These 'bc' parameters could be outright removed, but as of right now they
will be used in some parts of libregex land. Silence the warnings instead
rather than flip-flopping.
2018-01-21 04:57:29 +00:00
mckusick
39d99c1186 Correct fsck journal-recovery code to update a cylinder-group
check-hash after making changes to the cylinder group. The problem
was that the journal-recovery code was calling the libufs bwrite()
function instead of the cgput() function. The cgput() function updates
the cylinder-group check-hash before writing the cylinder group.

This change required the additions of the cgget() and cgput() functions
to the libufs API to avoid a gratuitous bcopy of every cylinder group
to be read or written. These new functions have been added to the
libufs manual pages. This was the first opportunity that I have had
to use and document the use of the EDOOFUS error code.

Reviewed by: kib
Reported by: emaste and others
2018-01-17 17:58:24 +00:00
dim
3207b51c93 Pull in r322623 from upstream llvm trunk (by Andrew V. Tischenko):
Allow usage of X86-prefixes as separate instrs.
  Differential Revision: https://reviews.llvm.org/D42102

This should fix parse errors when x86 prefixes (such as 'lock' and
'rep') are followed by various non-mnemonic tokens, e.g. comments, .byte
directives and labels.

PR:		224669,225054
2018-01-17 17:11:55 +00:00
fabient
326b96a88c Fix pmcstat exit from kernel introduced by r325275.
pmcstat request for close will generate a close event.
This event will be in turn received by pmcstat to close the file.

Reviewed by:	kib
Tested by:	pho
MFC after:	1 week
Sponsored by: Stormshield
2018-01-17 16:41:22 +00:00
arichardson
90f63e1c7f libnetbsd: Make the function declaration of efopen() match the definition
In order to crossbuild FreeBSD on Mac/Linux I also need to build libnetbsd
and FILE* is not equal to struct __sFILE on those platforms.

Reviewed By:	brooks, emaste
Approved By:	jhb (mentor)
Differential Revision: https://reviews.freebsd.org/D13305
2018-01-16 21:43:21 +00:00
br
35bb6ca08e Fix bug: increment the value of pmcstat_npmcs instead of moving pointer
to the next int position.

Bug was introduced in r324959 ("Extract a set of pmcstat functions and
interfaces to the new internal library -- libpmcstat.")

This fixes pmcstat top mode (-T) operation.
Example: pmcstat -n1 -S clock.hard -T

Reported by:	Peter Holm <peter@holm.cc>
Sponsored by:	DARPA, AFRL
2018-01-16 09:31:01 +00:00
tuexen
b86a65dcd0 Bump date, which I missed in r328014. Thanks to jhb@ for reporting. 2018-01-15 23:12:54 +00:00
tuexen
9db4633471 Add support for decoding the nxt_flags, rcv_flags, and snd_flags of
SCTP level cmsgs.
2018-01-15 20:37:11 +00:00
tuexen
aab0289ab1 Add support for decoding the type of a cmsg. 2018-01-15 10:59:04 +00:00
tuexen
96e66998d9 Simplify table generation. 2018-01-15 08:32:49 +00:00
tuexen
dc1ea661c7 Add a function is decode the sinfo_flags of struct sctp_sndrcvinfo. 2018-01-14 14:27:42 +00:00
tuexen
5c419e6ba6 Add suppor for the supported PR-SCTP policies. 2018-01-14 12:08:41 +00:00
dim
d91380862c Merge ^/head r327886 through r327930. 2018-01-13 17:52:55 +00:00
dim
5473ed2089 Build llvm-extract with -lz, and add a few objects to liblldb, both of
which turn out to be needed when you don't use -ffunction-sections.

Reported by:	Shawn Webb <shawn.webb@hardenedbsd.org>
2018-01-13 13:53:05 +00:00
jhibbits
00a6946205 Replace the PMC class struct copy with an explicit memcpy()
This should be effectively a nop for all archs, but for some reason the codegen
difference on the PowerPC 970 is such that the struct assignment doesn't work
(unless a printf() using one of the elements in the copied struct follows it),
while the memcpy() succeeds.  On all archs the memcpy() should be expanded to an
inline copy, since the copy is bounded to ~16 bytes.

MFC after:	3 weeks
2018-01-13 04:53:04 +00:00
jeff
f375b4dd66 Implement NUMA support in uma(9) and malloc(9). Allocations from specific
domains can be done by the _domain() API variants.  UMA also supports a
first-touch policy via the NUMA zone flag.

The slab layer is now segregated by VM domains and is precise.  It handles
iteration for round-robin directly.  The per-cpu cache layer remains
a mix of domains according to where memory is allocated and freed.  Well
behaved clients can achieve perfect locality with no performance penalty.

The direct domain allocation functions have to visit the slab layer and
so require per-zone locks which come at some expense.

Reviewed by:	Attilio (a slightly older version)
Tested by:	pho
Sponsored by:	Netflix, Dell/EMC Isilon
2018-01-12 23:25:05 +00:00
jeff
94c7af8ca2 Implement 'domainset', a cpuset based NUMA policy mechanism. This allows
userspace to control NUMA policy administratively and programmatically.

Implement domainset based iterators in the page layer.

Remove the now legacy numa_* syscalls.

Cleanup some header polution created by having seq.h in proc.h.

Reviewed by:	markj, kib
Discussed with:	alc
Tested by:	pho
Sponsored by:	Netflix, Dell/EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D13403
2018-01-12 22:48:23 +00:00
dim
b64d96a23d Merge ^/head r327624 through r327885. 2018-01-12 18:23:35 +00:00
oshogbo
214653c9f8 Fix markup. 2018-01-10 02:57:22 +00:00
oshogbo
ffc175f780 Document the DNS Casper service.
Reviewed by:	brueffer@, bcr@
Differential Revision:	https://reviews.freebsd.org/D13762
2018-01-08 09:20:08 +00:00
dim
0f76262754 Merge llvm, clang, lld, lldb, compiler-rt and libc++ release_60 r321788,
update build glue and version numbers.
2018-01-06 23:44:14 +00:00
dim
5299f7c2ee Vendor import of llvm release_60 branch r321788:
https://llvm.org/svn/llvm-project/llvm/branches/release_60@321788
2018-01-06 21:34:26 +00:00
dim
6a38aa2ea6 Merge ^/head r327341 through r327623. 2018-01-06 16:13:17 +00:00
imp
c92659280b The source strings are from the password database which guarantees
that the data going into it is sane.  Out of an abundance of caution,
limit the string copies to prevent an overflow.

CID: 1019035
2018-01-06 12:46:04 +00:00
oshogbo
e01adbb00f Build service tests with Casper support. 2018-01-05 09:31:41 +00:00
imp
1432862eea Need to convert '/' back to '\' when creating a path. Ideally, this
would be filesystem type dependent, but that's difficult to accomplish
and it's unclear how the UEFI firmware will cope. Be conservative and
make boot loaders cope instead.

Sponsored by: Netflix
2018-01-05 07:09:29 +00:00
imp
6bb28aae18 Set dp to NULL when we free it, and tree a NULL dp as an error
condition. This should prevent a double free. In addition, prevent a
leak by freeing dp each loop and when we're done.

CID: 1383577
Sponsored by: Netflix
2018-01-05 07:09:24 +00:00
oshogbo
6fceb757ff cap_unwrap should return a descriptor but also free the structure. 2018-01-04 08:23:23 +00:00
oshogbo
29ec275f3d Add missing macro in man page.
Reported by:	brueffer@
2018-01-04 04:04:29 +00:00
oshogbo
c7ef54dfa9 Document services which we have in libcasper.
Reviewed by:	bcr@
Differential Revision:	https://reviews.freebsd.org/D13734
2018-01-03 06:22:40 +00:00
delphij
a81d89e137 Remove unused includes. 2018-01-01 08:01:26 +00:00
eadler
d55e4600b3 cacos(3): correct spelling of 'I'
In some cases we had 'i' instead of 'I'.

PR:		195517
Submitted by:	stephen
2017-12-31 00:55:00 +00:00
eadler
c217338d29 isgreater(3): correct description of isunordered macro
PR:		211376
Submitted by:	Duane <parakleta@darkreality.org>
MFC After:	1 week
2017-12-31 00:46:41 +00:00
eadler
332f786adf libc/locale: fix an off-by-one in newlocale
Reported by:	zrj@DragonFlyBSD.org
2017-12-29 14:56:46 +00:00
dim
49c7ad4b12 Merge ^/head r327169 through r327340. 2017-12-29 12:51:26 +00:00
dim
740b3dd5fe Merge llvm, clang, lld, lldb, compiler-rt and libc++ trunk r321545,
update build glue and version numbers, add new intrinsics headers, and
update OptionalObsoleteFiles.inc.
2017-12-29 00:56:15 +00:00
dim
6168e10044 Add one more file to libllvm's SRCS_MIN, since this one is required for
MK_SHARED_TOOLCHAIN=yes.
2017-12-29 00:21:50 +00:00
dim
f1f1b46eff Vendor import of llvm trunk r321545:
https://llvm.org/svn/llvm-project/llvm/trunk@321545
2017-12-28 23:57:18 +00:00
robak
a9b02c6e96 humanize_number(3): fix math edge case in rounding large numbers
Fix for remainder overflow, when in rare cases adding remainder to divider
exceeded 1 and turned the total to 1000 in final formatting, taking up
the space for the unit character.

The fix continues the division of the original number if the above case
happens -- added the appropriate check to the for loop performing
the division. This lowers the value shown, to make it fit into the buffer
space provided (1.0M for 4+1 character buffer, as used by ls).

Add test case for the reported bug and extend test program to support
providing buffer length (ls -lh uses 5, tests hard-coded 4).

PR:		224498
Submitted by:	Pawel Biernacki <pawel.biernacki@gmail.com>
Reported by:	Masachika Ishizuka <ish@amail.plala.or.jp>
Reviewed by:	cem, kib
Approved by:	cem, kib
MFC after:	1 week
Sponsored by:	Mysterious Code Ltd.
Differential Revision:	D13578
2017-12-28 22:57:34 +00:00
dim
993164fb24 Vendor import of clang trunk r321530:
https://llvm.org/svn/llvm-project/cfe/trunk@321530
2017-12-28 21:23:03 +00:00
dim
479b811dec Vendor import of llvm trunk r321530:
https://llvm.org/svn/llvm-project/llvm/trunk@321530
2017-12-28 21:22:49 +00:00
imp
f079001a1d Close slave on fork error to prevent pty fd leak.
CID: 978209
2017-12-28 05:33:59 +00:00
eadler
f156130c4f Fix a few more speelling errors
Reviewed by:		bjk
Reviewed by:		jilles (incl formal "accept")
Differential Revision:	https://reviews.freebsd.org/D13650
2017-12-28 01:31:28 +00:00
pfg
73ddbfc6bb SPDX: Small for a license ID tags.
Use parenthesis for grouping as suggested by the spec.
2017-12-27 21:36:37 +00:00
pfg
36c2d09b6b SPDX: Fix some License ID tags for libc. 2017-12-27 21:21:03 +00:00
eadler
ca4bf99dde lib: Fix several typos and minor errors
- duplicate words
- typos
- references to old versions of FreeBSD

Reviewed by:	imp, benno
2017-12-27 03:23:41 +00:00
mckusick
5e717fc60d Missing disk close in libufs. 2017-12-26 23:16:11 +00:00
eadler
f482f2ba91 fsync(3): correctly document return values
In r268924 the behavior of fflush was changed to return success
on read only streams. Document this.

Reported by:	zrj@DragonFlyBSD.org
2017-12-25 19:49:05 +00:00
dim
ec11d4437e Only build tsan and tsan_cxx for amd64, as 32 bit is unsupported. 2017-12-25 13:17:29 +00:00
dim
a452a2c53c Vendor import of clang trunk r321426:
https://llvm.org/svn/llvm-project/cfe/trunk@321426
2017-12-24 14:05:01 +00:00
dim
90a93bbe93 Vendor import of llvm trunk r321426:
https://llvm.org/svn/llvm-project/llvm/trunk@321426
2017-12-24 14:04:50 +00:00
dim
b38f608980 Merge ^/head r326936 through r327149. 2017-12-24 13:22:57 +00:00
dim
2bcccfe68a Update clang, lld and llvm version numbers for r321414, and update build
glue.
2017-12-24 12:32:55 +00:00
dim
8aebf5a8bf Vendor import of clang trunk r321414:
https://llvm.org/svn/llvm-project/cfe/trunk@321414
2017-12-24 01:00:23 +00:00
dim
9a75be7ae2 Vendor import of llvm trunk r321414:
https://llvm.org/svn/llvm-project/llvm/trunk@321414
2017-12-24 01:00:08 +00:00
dim
ba4e891d87 Next step in updating llvm/clang build glue: make libclang_rt build. 2017-12-23 21:41:32 +00:00
oshogbo
60da446a21 Introduce the daemonfd function.
The daemonfd function is equivalent to the daemon(3) function expect that
arguments are descriptors. For example dhclient(8) which is sandboxed is
unable to open /dev/null to close stdio instead it's allows to fail
daemon(3) function to close the descriptors and then do it explicit in code.
Instead of such hacks we can use now daemonfd.

This API can be also helpful to migrate system to platforms like CheriBSD.

Reviewed by:	brooks@, bcr@, jilles@ (earlier version)
Differential Revision:	https://reviews.freebsd.org/D13433
2017-12-23 18:07:43 +00:00
eadler
610b1292f4 fopen.1: document truncation
This documentation truncation similar to POSIX and glibc.

PR:		202545
Reported by:	intron@intron.ac
2017-12-23 05:13:39 +00:00
dim
274a2c8eba Next step in updating llvm/clang build glue: make lldb build. 2017-12-22 19:10:19 +00:00
dim
d062dc1876 Next step in updating llvm/clang build glue: make lld build. 2017-12-22 16:27:29 +00:00
dim
e288f5f1c6 Sort source file lists under lib/clang. 2017-12-22 13:35:26 +00:00
dim
196fc344f1 Next step in updating llvm/clang build glue: make the optional llvm and
clang tools build.
2017-12-22 13:28:10 +00:00
dim
48179c3cfd Next step in updating llvm/clang build glue: make llvm-objdump build. 2017-12-22 11:41:18 +00:00
dim
bc7d830468 Next step in updating llvm/clang build glue: make the full clang
executable build.
2017-12-22 10:04:40 +00:00
dim
ce14442b6c First step in updating llvm/clang build glue: make only the clang
executable build.
2017-12-21 21:24:52 +00:00
imp
db6bf02e79 Bump number that's an insane number of devices from 1,000 to 10,000. I
have access to machines that are pushing 400 devices. When 1,000 was
selected, it was rare to get even 40 or 50 devices. Bump the limit by
10x to keep up with the times.

Sponsored by: Netflix
2017-12-21 04:21:59 +00:00
dim
8e7d6f2e54 Update libclang_rt version number. 2017-12-20 20:27:59 +00:00
dim
1253af537c Bump FREEBSD_CC_VERSION. 2017-12-20 20:27:23 +00:00
dim
4db9de40f8 Add new clang intrinsics headers, and update version number. 2017-12-20 20:27:09 +00:00
dim
d691b51689 Update generated config headers, and version numbers. 2017-12-20 20:25:35 +00:00
ume
156cfa4de4 Don't ignore trailing spaces after numerical IP addresses.
PR:		224403
Reported by:	Michael Kaufmann
Reviewed by:	Michael Kaufmann
MFC after:	1 week
2017-12-20 17:44:31 +00:00
dim
fe6d824e6e Vendor import of clang trunk r321017:
https://llvm.org/svn/llvm-project/cfe/trunk@321017
2017-12-18 20:11:37 +00:00
dim
08d589457c Vendor import of llvm trunk r321017:
https://llvm.org/svn/llvm-project/llvm/trunk@321017
2017-12-18 20:10:56 +00:00
ed
118522df7e libsysdecode: Add a new ABI type, SYSDECODE_ABI_CLOUDABI32.
In order to let truss(8) support tracing of 32-bit CloudABI
applications, we need to add a new ABI type to libsysdecode. We can
reuse the existing errno mapping table. Also link in the cloudabi32
system call table to translate system call names.

While there, remove all of the architecture ifdefs. There are not
needed, as the CloudABI data types and system call tables build fine on
any architecture. Building this unconditionally will make it easier to
do tracing for different compat modes, emulation, etc.

Reviewed by:	jhb
Differential Revision:	https://reviews.freebsd.org/D13516
2017-12-16 19:37:55 +00:00
dim
0a6d7463ef Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to
5.0.1 release (upstream r320880).

Relnotes:	yes
MFC after:	2 weeks
2017-12-16 18:06:30 +00:00
emaste
b092f3033f revert r322589: force use of ld.bfd for linking i386 libc
As of r326897 ld.lld can link a working i386 libc.so, so we no longer
need to force use of ld.bfd.

Sponsored by:	The FreeBSD Foundation
2017-12-16 15:17:54 +00:00
dim
7c2d533890 Vendor import of clang 5.0.1 release r320880:
https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_501/final@320880
2017-12-16 14:45:37 +00:00
dim
80d646bdef Vendor import of llvm 5.0.1 release r320880:
https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_501/final@320880
2017-12-16 14:44:35 +00:00
pfg
e11cf14dc2 SPDX: some uses of the RSA-MD license. 2017-12-13 16:30:39 +00:00
pfg
b036d1b0cd SPDX: mostly fixes to previous changes.
Introduce the recently approved BSD-1-Clause and replace 0BSD which
never did fit well our use cases.
2017-12-13 16:13:17 +00:00
mmel
8cc706e7c9 Rework alignment handling in __libc_allocate_tls() for Variant I of TLS layout.
There are two versions of variant I of TLS
- ARM and aarch64 uses original version of variant I here TP points to
  start of TCB followed by aligned TLS segment. Both TCB and TLS must
  be aligned to alignment of TLS section. The TCB[0] points to DTV vector
  and DTV values are real addresses (without bias).

- MIPS, PowerPC and RISC-V use modified version of variant I,
  where TP points (with bias) to TLS and TCB immediately precedes TLS
  without any alignment gap. Only TLS should be aligned. The TCB[0]
  points to DTV vector and DTV values are biased by constant value (0x8000)
  from real addresses.

Take all this in account when allocating memory for TLS structures.

MFC after:	1 month
Reviewed by:	kib, mizhka
Tested by:	mizhka(on mips)
Differential Revision:	https://reviews.freebsd.org/D13378
2017-12-12 11:25:30 +00:00
dim
ccfcd29c41 Correct r326748, indicating that tgammal(3) is mapped to tgamma(3), not
to itself.

Noticed by:	jilles
MFC after:	3 days
2017-12-10 23:03:13 +00:00
dim
1663863dd1 Document the existence and precision of the remaining long double
functions for which an imprecise stub implementation was added in
r255294, namely powl(3) and tgammal(3).

Submitted by:	Steve Kargl
MFC after:	3 days
2017-12-10 16:42:59 +00:00
ed
32e7b7bca7 Remove basename_r(3).
Now that the POSIX working group is going to require that basename(3)
and dirname(3) are thread-safe in future revisions of the standard,
there is even less of a need to provide basename_r(3). Remove this
function to prevent people from writing code that only builds on
FreeBSD and Bionic.

Removing this function seems to break exactly one port: sbruno@'s
qemu-user-static. I will send him a pull request on GitHub in a bit.
__FreeBSD_version will not be bumped, as any value from 2017 can be used
to test for the presence of a thread-safe basename(3)/dirname(3).

PR:		https://bugs.freebsd.org/224016
2017-12-08 22:06:18 +00:00
pfg
a39aa7af62 SPDX: more ISC-related files. 2017-12-08 17:52:53 +00:00
pfg
807d9a1070 SPDX: license IDs for some ISC-related files. 2017-12-08 15:57:29 +00:00
dim
2fc37d8fd2 Remove an unused incude from lib/msun/bsdsrc/b_log.c.
Submitted by:	Steve Kargl
MFC after:	3 days
2017-12-07 20:41:23 +00:00
dim
2a1f302a57 Remove the sentence in math(3) about some long double math functions not
being available.

Submitted by:	Steve Kargl
MFC after:	3 days
2017-12-07 20:38:37 +00:00
markj
d17785ad38 Ensure that "out" is initialized in all error paths.
Reported by:	gcc
Reviewed by:	cem
Differential Revision:	https://reviews.freebsd.org/D13402
2017-12-07 15:16:17 +00:00
bjk
82a7a11127 Note that old sys/event.h required manual sys/types.h inclusion
ed fixed this in r313704 but older versions are still affected.
2017-12-07 01:50:17 +00:00
asomers
08d7b0184a Fix a null-pointer dereference and a tautological check in cam_get_device
Reported by:	Coverity
CID:		1017964
MFC after:	3 weeks
Sponsored by:	Spectra Logic Corp
Differential Revision:	https://reviews.freebsd.org/D13184
2017-12-06 23:24:11 +00:00
asomers
6f7abc3dcf Optimize telldir(3)
Currently each call to telldir() requires a malloc and adds an entry to a
linked list which must be traversed on future telldir(), seekdir(),
closedir(), and readdir() calls. Applications that call telldir() for every
directory entry incur O(n^2) behavior in readdir() and O(n) in telldir() and
closedir().

This optimization eliminates the malloc() and linked list in most cases by
packing the relevant information into a single long. On 64-bit architectures
msdosfs, NFS, tmpfs, UFS, and ZFS can all use the packed representation.  On
32-bit architectures msdosfs, NFS, and UFS can use the packed
representation, but ZFS and tmpfs can only use it for about the first 128
files per directory.  Memory savings is about 50 bytes per telldir(3) call.
Speedup for telldir()-heavy directory traversals is about 20-30x for one
million files per directory.

Reviewed by:	kib, mav, mckusick
MFC after:	3 weeks
Sponsored by:	Spectra Logic Corp
Differential Revision:	https://reviews.freebsd.org/D13385
2017-12-06 22:06:48 +00:00
stevek
948518baf3 The function fwscanf() return value is wrong when encountering an early
matching failure.

According to the Open Group documentation for fwscanf:
"Upon successful completion, these functions shall return the number of
successfully matched and assigned input items; this number can be zero in
the event of an early matching failure."

Without this change, fwscanf would return EOF in the case of an early
matching failure, instead of the proper return value of 0.

This change aligns fwscanf(3) with the implementation in fscanf(3).

PR:		202240
Submitted by:	rajendra.sy@gmail.com
Reviewed by:	jhb, cem
Approved by:	sjg (mentor)
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D13288
2017-12-06 21:12:24 +00:00