Commit 38687b56 authored by Marcelo Ricardo Leitner's avatar Marcelo Ricardo Leitner Committed by David S. Miller
Browse files

sctp: allow unsetting sockopt MAXSEG



RFC 6458 Section 8.1.16 says that setting MAXSEG as 0 means that the user
is not limiting it, and not that it should set to the *current* maximum,
as we are doing.

This patch thus allow setting it as 0, effectively removing the user
limit.

Signed-off-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 439ef030
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -3211,7 +3211,6 @@ static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, unsign
static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned int optlen)
{
	struct sctp_sock *sp = sctp_sk(sk);
	struct sctp_af *af = sp->pf->af;
	struct sctp_assoc_value params;
	struct sctp_association *asoc;
	int val;
@@ -3249,12 +3248,6 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned
	}

	if (asoc) {
		if (val == 0) {
			val = asoc->pathmtu - af->net_header_len;
			val -= af->ip_options_len(sk);
			val -= sizeof(struct sctphdr) +
			       sctp_datachk_len(&asoc->stream);
		}
		asoc->user_frag = val;
		sctp_assoc_update_frag_point(asoc);
	} else {