Michael Tuexen
3c1ba6f394
sctp: improve consistency, no functional change intended
2021-11-26 12:53:43 +01:00
Michael Tuexen
0906362646
sctp: add some asserts, no functional changes intended
...
This might help in narrowing down
https://syzkaller.appspot.com/bug?id=fbd79abaec55f5aede63937182f4247006ea883b
2021-11-26 12:19:33 +01:00
Gordon Bergling
bb91496a85
netinet: Fix a common typo in source code comments
...
- s/writting/writing/
MFC after: 3 days
2021-11-03 16:21:49 +01:00
Michael Tuexen
762ae0ec8d
sctp: Simplify stream scheduler usage
...
Callers are getting the stcb send lock, so just KASSERT that.
No need to signal this when calling stream scheduler functions.
No functional change intended.
MFC after: 1 week
2021-09-21 17:13:57 +02:00
Michael Tuexen
0b79a76f84
sctp: improve consistency when calling stream scheduler
...
Hold always the stcb send lock when calling sctp_ss_init() and
sctp_ss_remove_from_stream().
MFC after: 1 week
2021-09-21 00:54:13 +02:00
Mark Johnston
e6c19aa94d
sctp: Allow blocking on I/O locks even with non-blocking sockets
...
There are two flags to request a non-blocking receive on a socket:
MSG_NBIO and MSG_DONTWAIT. They are handled a bit differently in that
soreceive_generic() and soreceive_stream() will block on the socket I/O
lock when MSG_NBIO is set, but not if MSG_DONTWAIT is set. In general,
MSG_NBIO seems to mean, "don't block if there is no data to receive" and
MSG_DONTWAIT means "don't go to sleep for any reason".
SCTP's soreceive implementation did not allow blocking on the I/O lock
if either flag is set, but this violates an assumption in
aio_process_sb(), which specifies MSG_NBIO but nonetheless
expects to make progress if data is available to read. Change
sctp_sorecvmsg() to block on the I/O lock only if MSG_DONTWAIT
is not set.
Reported by: syzbot+c7d22dbbb9aef509421d@syzkaller.appspotmail.com
Reviewed by: tuexen
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D31915
2021-09-14 09:02:05 -04:00
Michael Tuexen
aab1d593b2
sctp: minor cleanups, no functional change intended
2021-09-08 15:13:49 +02:00
Mark Johnston
f94acf52a4
socket: Rename sb(un)lock() and interlock with listen(2)
...
In preparation for moving sockbuf locks into the containing socket,
provide alternative macros for the sockbuf I/O locks:
SOCK_IO_SEND_(UN)LOCK() and SOCK_IO_RECV_(UN)LOCK(). These operate on a
socket rather than a socket buffer. Note that these locks are used only
to prevent concurrent readers and writters from interleaving I/O.
When locking for I/O, return an error if the socket is a listening
socket. Currently the check is racy since the sockbuf sx locks are
destroyed during the transition to a listening socket, but that will no
longer be true after some follow-up changes.
Modify a few places to check for errors from
sblock()/SOCK_IO_(SEND|RECV)_LOCK() where they were not before. In
particular, add checks to sendfile() and sorflush().
Reviewed by: tuexen, gallatin
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D31657
2021-09-07 15:06:48 -04:00
Michael Tuexen
112899c6af
sctp: improve input validation of mapped addresses in sctp_connectx()
...
MFC after: 3 days
2021-08-07 15:12:09 +02:00
Michael Tuexen
105b68b42d
sctp: Fix errno in case of association setup failures
...
Do not report always ETIMEDOUT, but only when appropriate. In
other cases report ECONNABORTED.
MFC after: 3 days
2021-07-09 23:19:25 +02:00
Michael Tuexen
ce64352a70
sctp: provide consistent stream information in case of early errors
...
While there, make sure the function is called correctly.
MFC after: 3 days
2021-07-09 14:16:59 +02:00
Michael Tuexen
84992a3251
sctp: provide sac_error also for ABORT chunk being sent
...
Thanks to Florent Castelli for bringing this issue up for the
userland stack and providing an initial patch.
MFC: 3 days
2021-07-09 13:46:27 +02:00
Michael Tuexen
c7f048ab35
sctp: initialize sequence numbers for ECN correctly
...
MFC after: 3 days
Reported by: Junseok Yang (for the userland stack)
2021-06-27 20:14:48 +02:00
Mark Johnston
a100217489
Consistently use the SOCKBUF_MTX() and SOCK_MTX() macros
...
This makes it easier to change the socket locking protocols. No
functional change intended.
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
2021-06-14 17:32:32 -04:00
Michael Tuexen
e010d20032
sctp: update the vtag for INIT and INIT-ACK chunks
...
This is needed in case of responding with an ABORT to an INIT-ACK.
2021-04-30 13:33:16 +02:00
Michael Tuexen
d995cc7e54
sctp: fix handling of RTO.initial of 1 ms
...
MFC after: 3 days
Reported by: syzbot+5eb0e009147050056ce9@syzkaller.appspotmail.com
2021-03-22 16:44:18 +01:00
Michael Tuexen
70e95f0b69
sctp: avoid integer overflow when starting the HB timer
...
MFC after: 3 days
Reported by: syzbot+14b9d7c3c64208fae62f@syzkaller.appspotmail.com
2021-02-27 23:27:30 +01:00
Michael Tuexen
bdd4630c9a
sctp: small cleanup, no functional change intended.
...
MFC after: 3 days
2021-02-01 14:04:57 +01:00
Michael Tuexen
7a051c0a78
sctp: improve consistency
...
No functional change intended.
MFC: 1 week
2021-01-24 00:07:41 +01:00
Michael Tuexen
6176f9d6df
Remove dead stores reported by clang static code analysis
...
MFC after: 3 days
2020-10-06 11:08:52 +00:00
Mateusz Guzik
662c13053f
net: clean up empty lines in .c and .h files
2020-09-01 21:19:14 +00:00
Michael Tuexen
f5d30f7f76
Improve the handling of concurrent send() calls for SCTP sockets,
...
especially when having the explicit EOR mode enabled.
Reported by: Megan2013678@protonmail.com
Reported by: syzbot+bc02585076c3cc977f9b@syzkaller.appspotmail.com
MFC after: 3 days
2020-08-16 11:50:37 +00:00
Michael Tuexen
04996cb74b
Enter epoch earlier. This is needed because we are exiting it also
...
in error cases.
MFC after: 1 week
2020-08-15 11:22:07 +00:00
Michael Tuexen
8745f898c4
Add reference counts for inp/stcb/net when timers are running.
...
This avoids a use-after-free reported for the userland stack.
Thanks to Taylor Brandstetter for suggesting a patch for
the userland stack.
MFC after: 1 week
2020-07-19 12:34:19 +00:00
Michael Tuexen
7f0ad2274b
Improve the locking of address lists by adding some asserts and
...
rearranging the addition of address such that the lock is not
given up during checking and adding.
MFC after: 1 week
2020-07-17 15:09:49 +00:00
Michael Tuexen
7a3f60e7f5
Fix a bug introduced in https://svnweb.freebsd.org/changeset/base/362173
...
Reported by: syzbot+f3a6fccfa6ae9d3ded29@syzkaller.appspotmail.com
MFC after: 1 week
2020-06-30 21:50:05 +00:00
Michael Tuexen
171edd2110
Fix the build for an INET6 only configuration.
...
The fix from the last commit is actually needed twice...
MFC after: 1 week
2020-06-21 09:56:09 +00:00
Michael Tuexen
5087b6e732
Set a variable also in the case of an INET6 only kernel
...
MFC after: 1 week
2020-06-20 23:48:57 +00:00
Michael Tuexen
7621bd5ead
Cleanup the adding and deleting of addresses via sctp_bindx().
...
There is no need to use the association identifier, so remove it.
While there, cleanup the code a bit.
MFC after: 1 week
2020-06-20 20:20:16 +00:00
Michael Tuexen
7a9dbc33f9
Remove last argument of sctp_addr_mgmt_ep_sa(), since it is not used.
...
MFC after: 1 week
2020-06-19 12:35:29 +00:00
Michael Tuexen
2d87bacde4
Allow the self reference to be NULL in case the timer was stopped.
...
Submitted by: Timo Voelker
MFC after: 1 week
2020-06-17 15:27:45 +00:00
Michael Tuexen
4471043177
Cleanups, no functional change.
...
MFC after: 1 week
2020-06-14 09:50:00 +00:00
Michael Tuexen
28397ac1ed
Non-functional changes due to upstream cleanup.
...
MFC after: 1 week
2020-06-11 13:34:09 +00:00
Michael Tuexen
5fb132abbb
Whitespace cleanups and removal of a stale comment.
...
MFC after: 1 week
2020-06-08 20:23:20 +00:00
Michael Tuexen
70486b27ae
Retire SCTP_SO_LOCK_TESTING.
...
This was intended to test the locking used in the MacOS X kernel on a
FreeBSD system, to make use of WITNESS and other debugging infrastructure.
This hasn't been used for ages, to take it out to reduce the #ifdef
complexity.
MFC after: 1 week
2020-06-07 14:39:20 +00:00
Michael Tuexen
04ce5df9c9
Remove redundant assignment.
...
MFC after: 3 days
2020-05-18 19:23:01 +00:00
Michael Tuexen
88116b7e4d
Fix logical condition by looking at usecs.
...
This issue was found by cpp-check running on the userland stack.
MFC after: 3 days
2020-05-18 15:02:15 +00:00
Michael Tuexen
00023d8a87
Whitespace change.
...
MFC after: 3 days
2020-05-18 15:00:18 +00:00
Michael Tuexen
83ed508055
Ensure that the SCTP iterator runs with an stcb and inp, which belong to
...
each other.
Reported by: syzbot+82d39d14f2f765e38db0@syzkaller.appspotmail.com
MFC after: 3 days
2020-05-10 22:54:30 +00:00
Michael Tuexen
efd5e69291
Ensure that we have a path when starting the T3 RXT timer.
...
Reported by: syzbot+f2321629047f89486fa3@syzkaller.appspotmail.com
MFC after: 3 days
2020-05-10 17:19:19 +00:00
Michael Tuexen
f4cb790a35
Do more argument validation under INVARIANTS when starting/stopping
...
an SCTP timer.
MFC after: 1 week
2020-04-06 13:58:13 +00:00
Michael Tuexen
25ec355353
Handle integer overflows correctly when converting msecs and secs to
...
ticks and vice versa.
These issues were caught by recently added panic() calls on INVARIANTS
systems.
Reported by: syzbot+b44787b4be7096cd1590@syzkaller.appspotmail.com
Reported by: syzbot+35f82d22805c1e899685@syzkaller.appspotmail.com
MFC after: 1 week
2020-03-28 20:25:45 +00:00
Michael Tuexen
7c63520c42
Remove an optimization, which was incorrect a couple of times and
...
therefore doesn't seem worth to be there.
In this case COOKIE where not retransmitted anymore, when the
socket was already closed.
MFC after: 1 week
2020-03-25 18:20:37 +00:00
Michael Tuexen
37686ccf08
Improve consistency in debug output.
...
MFC after: 1 week
2020-03-25 18:14:12 +00:00
Michael Tuexen
23e3c0880d
Use consistent debug output.
...
MFC after: 1 week
2020-03-25 13:19:41 +00:00
Michael Tuexen
e056fafd92
Don't restore the vnet too early in error cases.
...
MFC after: 1 week
2020-03-25 13:18:37 +00:00
Michael Tuexen
7522682e5e
Only call panic when building with INVARIANTS.
...
MFC after: 1 week
2020-03-24 23:04:07 +00:00
Michael Tuexen
a412576e36
Another cleanup of the timer code. Also be more pedantic about the
...
parameters of the timer start and stop routines. Several inconsistencies
have been fixed in earlier commits. Now they will be catched when running
an INVARIANTS system.
MFC after: 1 week
2020-03-24 22:44:36 +00:00
Michael Tuexen
a57fb68b92
More timer cleanups, no functional change.
...
MFC after: 1 week
2020-03-21 16:12:19 +00:00
Michael Tuexen
6fb7b4fbdb
Consistently provide arguments for timer start and stop routines.
...
This is another step in cleaning up timer handling.
MFC after: 1 week
2020-03-19 21:01:16 +00:00