25 Commits

Author SHA1 Message Date
ngie
ad386aeec3 MFC r270228:
r270228 (by asomers):

Numerous small fixes, mostly suggested by Coverity.

tests/sys/kern/unix_seqpacket_test.c
	* Remove a duplicate error check in mk_pair_of_sockets
	* Always close sockets in the success path of ATF test cases.  Don't
	  bother with the error paths, because those are mostly assertions
	  anyway.  Most of these socket leaks were reported by Coverity.
	  All of them are harmless, because each ATF test case runs in its
	  own process.
	* Fix the len argument to send in shutdown_send and
	  shutdown_send_sigpipe.  The old version was using sizeof a pointer
	  instead of sizeof the char array.  Reported by Coverity.
	* Change a few ATF_CHECK to ATF_REQUIRE if the test can't reasonably
	  continue past a failure.

CID:		1229995, 1229991, 1229988, 1229994, 1229989, 1229992
CID:		1229993, 1229990, 1229984, 1229967, 1230005, 1229977
CID:		1229966, 1230004, 1229976
2016-01-06 20:50:23 +00:00
ngie
6631311a86 MFC r271397:
r271397 (by asomers):

Abort the create_socket test if socket creation fails.

CID:		1232756
2016-01-06 20:43:41 +00:00
ngie
1517961576 MFC r292914,r292957:
r292914:

Integrate tools/regression/sockets/unix_passfd into the FreeBSD test
suite as tests/sys/kern/unix_passfd_test

- Convert testcases to ATF
- Fix an alignment issues
- Mark rights_creds_payload(..) as an expected failure (see PR # 181741)

https://reviews.freebsd.org/D689

Submitted by: markj

r292957:

Rename `recvfd` and `sendfd` variables in recvfd/sendfd functions to avoid
-Wshadow issues with gcc
2016-01-06 20:29:15 +00:00
ngie
bb1abe544b MFC r288961,r288962:
r288961 (by bdrewery):

Fix build with older GCC which, doesn't like 'main' being a variable name.

r288962 (by jhb):

Tweak: use 'mainlwp' instead of 'mainpid' since this is a thread (LWP)
identifier, not a pid.
2016-01-06 20:27:55 +00:00
ngie
803ee78f97 MFC r292822:
Remove retval to fix a -Wunused-but-set-variable warning from gcc 4.9
2016-01-04 07:09:29 +00:00
ngie
a92a358887 MFC r292820:
Clean trailing whitespace
2016-01-04 07:06:46 +00:00
bdrewery
e7ee6ceff2 MFC r291331:
Avoid requiring 'make depend' here.
2015-12-04 19:14:14 +00:00
ngie
fc230dcf44 MFC r290913,r291181:
r290913:

Port contrib/netbsd-tests/kernel/t_mqueue.c to FreeBSD

- Add missing headers
- Ensure mqueuefs is loaded
- Make sure the mqueuefs path is absolute and relative to /
- Cast the result of mq_open returning -1 to (mqd_t) to mute a compiler
  warning

Sponsored by: EMC / Isilon Storage Division

r291181:

Integrate contrib/netbsd-tests/kernel/t_mqueue into the FreeBSD test
suite as tests/sys/kern/mqueue_test
2015-12-04 09:32:03 +00:00
ngie
634df7f08c MFC r291180:
Fix up convert.c generation

- Use a temporary file for convert.c to reduce likelihood of an interrupted
  build resulting in bad code being written to convert.c
- Truncate the file instead of appending to it to ensure that the file being
  touched will not result in duplicate declarations/definitions from
  kern_acct.c if/when kern_acct.c changes.
2015-12-04 09:29:47 +00:00
rodrigc
68a4f44cfa Fix bad MFC (r291173)
Replace SRCTOP with the relevant path via .CURDIR

Reviewed by: bdrewery
2015-12-03 18:04:43 +00:00
ngie
d84acbd961 MFC r290914:
Integrate tools/regression/pipe in to the FreeBSD test suite as
tests/sys/kern/pipe

- Fix style(9) bugs
- Fix compiler warnings
- Use `nitems(x)` instead of `sizeof(x) / sizeof(*x)` pattern

The testcases will be converted over to ATF eventually, but for now will be
integrated in as plain C tests

Sponsored by: EMC / Isilon Storage Division
2015-11-23 09:26:53 +00:00
ngie
83975b8166 MFC r290911,r290912:
r290911:

Ignore EINTR from usleep(3) in try_locks(..)

NetBSD's usleep(3) only returns -1/sets errno=EINVAL when `microseconds`
is one million or more

Submitted by: pho
Sponsored by: EMC / Isilon Storage Division

r290912:

Integrate contrib/netbsd-tests/kernel/t_lockf.c into the FreeBSD test suite as
tests/sys/kern/lockf_test

Sponsored by: EMC / Isilon Storage Division
2015-11-23 08:52:38 +00:00
ngie
d0fe4dbb71 MFC r290905,r290922:
r290905:

Integrate acct(2) testcase in as tests/sys/kern/acct/acct_test

The :encode_tv_random_million testcase fails the epsilon tests a few thousand
times out of one million, so expect the testcase to fail

Submitted by: keramida
Sponsored by: EMC / Isilon Storage Division

r290922:

Remove directory made obsolete by r290905

X-MFC note: stable/10 only
Sponsored by: EMC / Isilon Storage Division
2015-11-23 08:17:32 +00:00
jhb
e25ab6846b MFC 287386,288949,288993:
Export current system call code and argument count for system call entry
and exit events.  To preserve the ABI, the new fields are moved to the
end of struct thread in these branches (unlike HEAD) and explicitly copied
when new threads are created.  In addition, the new tests are only added
in 10.

r287386:
Export current system call code and argument count for system call entry
and exit events. procfs stop events for system call tracing report these
values (argument count for system call entry and code for system call exit),
but ptrace() does not provide this information. (Note that while the system
call code can be determined in an ABI-specific manner during system call
entry, it is not generally available during system call exit.)

The values are exported via new fields at the end of struct ptrace_lwpinfo
available via PT_LWPINFO.

r288949:
Fix various edge cases related to system call tracing.
- Always set td_dbg_sc_* when P_TRACED is set on system call entry
  even if the debugger is not tracing system call entries.  This
  ensures the fields are valid when reporting other stops that
  occur at system call boundaries such as for PT_FOLLOW_FORKS or
  when only tracing system call exits.
- Set TDB_SCX when reporting the stop for a new child process in
  fork_return().  This causes the event to be reported as a system
  call exit.
- Report a system call exit event in fork_return() for new threads in
  a traced process.
- Copy td_dbg_sc_* to new threads instead of zeroing.  This ensures
  that td_dbg_sc_code in particular will report the system call that
  created the new thread or process when it reports a system call
  exit event in fork_return().
- Add new ptrace tests to verify that new child processes and threads
  report system call exit events with a valid pl_syscall_code via
  PT_LWPINFO.

r288993:
Document the recently added pl_syscall_* fields in struct ptrace_lwpinfo.
2015-10-23 01:27:44 +00:00
jhb
4a069f68d7 MFC 283281,283282,283562,283647,283836,284000,286158:
Various fixes to orphan handling which also fix issues with following
forks.

283281:
Always set p_oppid when attaching to an existing process via procfs
tracing.  This matches the behavior of ptrace(PT_ATTACH).  Also,
the procfs detach request assumes p_oppid is always set.

283282:
Only reparent a traced process to its old parent if the tracing process is
not the old parent. Otherwise, proc_reap() will leave the zombie in place
resulting in the process' status being returned twice to its parent.

Add test cases for PT_TRACE_ME and PT_ATTACH which are fixed by
this change.

283562:
Do not allow a process to reap an orphan (a child currently being
traced by another process such as a debugger). The parent process does
need to check for matching orphan pids to avoid returning ECHILD if an
orphan has exited, but it should not return the exited status for the
child until after the debugger has detached from the orphan process
either explicitly or implicitly via wait().

Add two tests for for this case: one where the debugger is the direct
child (thus the parent has a non-empty children list) and one where
the debugger is not a direct child (so the only "child" of the parent
is the orphan).

283647:
Tweak the description of when waitpid() doesn't return any status for a
non-blocking wait to avoid the word "empty".

283836:
Consistently only use one end of the pipe in the parent and debugger
processes and do not rely on EOF due to a close() in the debugger.

284000:
Add a CHILD_REQUIRE macro similar to ATF_REQUIRE for use in child processes
of the main test process.

286158:
Clear P_TRACED before reparenting a detached process back to its
original parent. Otherwise the debugee will be set as an orphan of
the debugger.

Add tests for tracing forks via PT_FOLLOW_FORK.
2015-09-09 23:39:30 +00:00
ngie
c3292ff7e0 MFC r282061:
Integrate tools/regression/execve into the FreeBSD test suite as
tests/sys/kern/execve
2015-05-16 23:39:54 +00:00
ngie
807e2f21fd MFC r262781,r263336:
r262781 (by pho):

Preserve naming consistency for test cases.

Pointed out by:	 jmmv
Sponsored by:	EMC / Isilon storage division

r263336 (by pho):

Added sysctl kern.maxfiles increase test, do not use /etc/passwd for tests
and use volatile sig_atomic_t for signal handler variable.

Reviewed by:	 asomers (previous version)
Sponsored by:	EMC / Isilon storage division
2015-05-13 12:17:01 +00:00
ngie
f67941309b MFC r262526,r262730:
r262526 (by pho):

Added a regression test for r234131.

Discussed with:	 asomers
Sponsored by:	EMC / Isilon storage division

r262730 (by pho):

Changed name of test case to a more descriptive one and moved
comment to the "descr" property.

Suggested by:	 jmmv
Sponsored by:	EMC / Isilon storage division
2015-05-13 11:01:48 +00:00
jmmv
9bf14ad939 MFC r264133: Fix variable type to avoid printf formatter warning. 2014-04-17 13:11:56 +00:00
jmmv
63fa6c9a5b MFC refactoring of the *.test.mk files.
- r263161 Make bsd.test.mk the only public mk fragment for the building of tests.
- r263172 Move FreeBSD Test Suite-specific code to a suite.test.mk file.
- r263204 Add some documentation for bsd.test.mk.
- r263217 Document support for TAP-compliant Perl test programs.

This is "make tinderbox" clean.
2014-04-14 23:51:57 +00:00
asomers
6b6e4c2d32 MFC r263116
Replace 4.4BSD Lite's unix domain socket backpressure hack with a cleaner
mechanism, based on the new SB_STOP sockbuf flag.  The old hack dynamically
changed the sending sockbuf's high water mark whenever adding or removing
data from the receiving sockbuf.  It worked for stream sockets, but it never
worked for SOCK_SEQPACKET sockets because of their atomic nature.  If the
sockbuf was partially full, it might return EMSGSIZE instead of blocking.

The new solution is based on DragonFlyBSD's fix from commit
3a6117bbe0ed6a87605c1e43e12a1438d8844380 on 2008-05-27.  It adds an SB_STOP
flag to sockbufs.  Whenever uipc_send surpasses the socket's size limit, it
sets SB_STOP on the sending sockbuf.  sbspace() will then return 0 for that
sockbuf, causing sosend_generic and friends to block.  uipc_rcvd will
likewise clear SB_STOP.  There are two fringe benefits: uipc_{send,rcvd} no
longer need to call chgsbsize() on every send and receive because they don't
change the sockbuf's high water mark.  Also, uipc_sense no longer needs to
acquire the UIPC linkage lock, because it's simpler to compute the
st_blksizes.

There is one drawback: since sbspace() will only ever return 0 or the
maximum, sosend_generic will allow the sockbuf to exceed its nominal maximum
size by at most one packet of size less than the max.  I don't think that's
a serious problem.  In fact, I'm not even positive that FreeBSD guarantees a
socket will always stay within its nominal size limit.

sys/sys/sockbuf.h
	Add the SB_STOP flag and adjust sbspace()

sys/sys/unpcb.h
	Delete the obsolete unp_cc and unp_mbcnt fields from struct unpcb.

sys/kern/uipc_usrreq.c
	Adjust uipc_rcvd, uipc_send, and uipc_sense to use the SB_STOP
	backpressure mechanism.  Removing obsolete unpcb fields from
	db_show_unpcb.

tests/sys/kern/unix_seqpacket_test.c
	Clear expected failures from ATF.
2014-04-03 16:57:16 +00:00
asomers
df22d5312e MFC r262867
Fix PR kern/185813 "SOCK_SEQPACKET AF_UNIX sockets with asymmetrical buffers
drop packets".  It was caused by a check for the space available in a
sockbuf, but it was checking the wrong sockbuf.

sys/sys/sockbuf.h
sys/kern/uipc_sockbuf.c
	Add sbappendaddr_nospacecheck_locked(), which is just like
	sbappendaddr_locked but doesn't validate the receiving socket's space.
	Factor out common code into sbappendaddr_locked_internal().  We
	shouldn't simply make sbappendaddr_locked check the space and then call
	sbappendaddr_nospacecheck_locked, because that would cause the O(n)
	function m_length to be called twice.

sys/kern/uipc_usrreq.c
	Use sbappendaddr_nospacecheck_locked for SOCK_SEQPACKET sockets,
	because the receiving sockbuf's size limit is irrelevant.

tests/sys/kern/unix_seqpacket_test.c
	Now that 185813 is fixed, pipe_128k_8k fails intermittently due to
	185812.  Make it fail every time by adding a usleep after starting the
	writer thread and before starting the reader thread in test_pipe.  That
	gives the writer time to fill up its send buffer.  Also, clear the
	expected failure message due to 185813.  It actually said "185812", but
	that was a typo.

PR:		kern/185813
2014-03-27 16:47:35 +00:00
asomers
7a8191d019 MFC r262868
Only use -lpthread for unix_seqpacket_test, not for all test programs.

MFC r262894

kern/Makefile
        Set WARNS=5 for all files in this directory
kern/unix_seqpacket_test.c
	Fix compiler warnings.  Most were benign, but rcvbuf_oversized
	wasn't working as intended because I forgot to set the buffer sizes.
2014-03-21 22:43:00 +00:00
asomers
ca8eab6508 MFC r262133
test_eagain_*_* should've been using nonblocking sockets instead of blocking
sockets.  The error was not exposed as long as the kernel suffered from PR
kern/185812.  Now corrected, these tests pass on DragonFlyBSD 3.6.0.
2014-03-06 21:47:22 +00:00
asomers
999d9343fa MFC r261081, r261133, and r261615
r261081
	Replace the old unix_seqpacket and unix_seqpacket_exercise
	tests, which were a little broken and not automatable, with
	unix_seqpacket_test.  It's coverage is a superset of the old
	tests and it uses ATF.  It includes test cases for bugs
	kern/185813 and kern/185812.

r261133
	Fix the Makefiles so that the tests I submitted in r261081 will
	actually get built.

r261615
	tests/sys/Makefile
		use TESTS_SUBDIRS for kern instead of SUBDIRS.  I don't
		think it makes a difference in this case, but
		TESTS_SUBDIRS is generally correct for subdirectories
		that contain tests.
2014-02-13 22:19:24 +00:00