diff options
Diffstat (limited to 'net/sctp/socket.c')
| -rw-r--r-- | net/sctp/socket.c | 29 | 
1 files changed, 6 insertions, 23 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 739f3e50120d..b8cebd5a87e5 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -3324,8 +3324,7 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned  		__u16 datasize = asoc ? sctp_datachk_len(&asoc->stream) :  				 sizeof(struct sctp_data_chunk); -		min_len = sctp_mtu_payload(sp, SCTP_DEFAULT_MINSEGMENT, -					   datasize); +		min_len = sctp_min_frag_point(sp, datasize);  		max_len = SCTP_MAX_CHUNK_LEN - datasize;  		if (val < min_len || val > max_len) @@ -3940,32 +3939,16 @@ static int sctp_setsockopt_pr_supported(struct sock *sk,  					unsigned int optlen)  {  	struct sctp_assoc_value params; -	struct sctp_association *asoc; -	int retval = -EINVAL;  	if (optlen != sizeof(params)) -		goto out; - -	if (copy_from_user(¶ms, optval, optlen)) { -		retval = -EFAULT; -		goto out; -	} - -	asoc = sctp_id2assoc(sk, params.assoc_id); -	if (asoc) { -		asoc->prsctp_enable = !!params.assoc_value; -	} else if (!params.assoc_id) { -		struct sctp_sock *sp = sctp_sk(sk); +		return -EINVAL; -		sp->ep->prsctp_enable = !!params.assoc_value; -	} else { -		goto out; -	} +	if (copy_from_user(¶ms, optval, optlen)) +		return -EFAULT; -	retval = 0; +	sctp_sk(sk)->ep->prsctp_enable = !!params.assoc_value; -out: -	return retval; +	return 0;  }  static int sctp_setsockopt_default_prinfo(struct sock *sk,  | 
