diff options
| author | David S. Miller <davem@davemloft.net> | 2011-12-23 17:13:56 -0500 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-12-23 17:13:56 -0500 | 
| commit | abb434cb0539fb355c1c921f8fd761efbbac3462 (patch) | |
| tree | 24a7d99ec161f8fd4dc9ff03c9c4cc93be883ce6 /net/sctp | |
| parent | 2494654d4890316e7340fb8b3458daad0474a1b9 (diff) | |
| parent | 6350323ad8def2ac00d77cdee3b79c9b9fba75c4 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
	net/bluetooth/l2cap_core.c
Just two overlapping changes, one added an initialization of
a local variable, and another change added a new local variable.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp')
| -rw-r--r-- | net/sctp/associola.c | 2 | ||||
| -rw-r--r-- | net/sctp/output.c | 8 | ||||
| -rw-r--r-- | net/sctp/outqueue.c | 6 | ||||
| -rw-r--r-- | net/sctp/protocol.c | 3 | ||||
| -rw-r--r-- | net/sctp/socket.c | 2 | ||||
| -rw-r--r-- | net/sctp/sysctl.c | 13 | 
6 files changed, 20 insertions, 14 deletions
| diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 152b5b3c3fff..acd2edbc073e 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -173,7 +173,7 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a  	asoc->timeouts[SCTP_EVENT_TIMEOUT_HEARTBEAT] = 0;  	asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] = asoc->sackdelay;  	asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] = -		(unsigned long)sp->autoclose * HZ; +		min_t(unsigned long, sp->autoclose, sctp_max_autoclose) * HZ;  	/* Initializes the timers */  	for (i = SCTP_EVENT_TIMEOUT_NONE; i < SCTP_NUM_TIMEOUT_TYPES; ++i) diff --git a/net/sctp/output.c b/net/sctp/output.c index 08b3cead6503..817174eb5f41 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c @@ -697,13 +697,7 @@ static void sctp_packet_append_data(struct sctp_packet *packet,  	/* Keep track of how many bytes are in flight to the receiver. */  	asoc->outqueue.outstanding_bytes += datasize; -	/* Update our view of the receiver's rwnd. Include sk_buff overhead -	 * while updating peer.rwnd so that it reduces the chances of a -	 * receiver running out of receive buffer space even when receive -	 * window is still open. This can happen when a sender is sending -	 * sending small messages. -	 */ -	datasize += sizeof(struct sk_buff); +	/* Update our view of the receiver's rwnd. */  	if (datasize < rwnd)  		rwnd -= datasize;  	else diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 14c2b06028ff..cfeb1d4a1ee6 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -411,8 +411,7 @@ void sctp_retransmit_mark(struct sctp_outq *q,  					chunk->transport->flight_size -=  							sctp_data_size(chunk);  				q->outstanding_bytes -= sctp_data_size(chunk); -				q->asoc->peer.rwnd += (sctp_data_size(chunk) + -							sizeof(struct sk_buff)); +				q->asoc->peer.rwnd += sctp_data_size(chunk);  			}  			continue;  		} @@ -432,8 +431,7 @@ void sctp_retransmit_mark(struct sctp_outq *q,  			 * (Section 7.2.4)), add the data size of those  			 * chunks to the rwnd.  			 */ -			q->asoc->peer.rwnd += (sctp_data_size(chunk) + -						sizeof(struct sk_buff)); +			q->asoc->peer.rwnd += sctp_data_size(chunk);  			q->outstanding_bytes -= sctp_data_size(chunk);  			if (chunk->transport)  				transport->flight_size -= sctp_data_size(chunk); diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index 544a9b68eb53..5942d27b1444 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c @@ -1285,6 +1285,9 @@ SCTP_STATIC __init int sctp_init(void)  	sctp_max_instreams    		= SCTP_DEFAULT_INSTREAMS;  	sctp_max_outstreams   		= SCTP_DEFAULT_OUTSTREAMS; +	/* Initialize maximum autoclose timeout. */ +	sctp_max_autoclose		= INT_MAX / HZ; +  	/* Initialize handle used for association ids. */  	idr_init(&sctp_assocs_id); diff --git a/net/sctp/socket.c b/net/sctp/socket.c index db0308344d07..408ebd0e7330 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -2200,8 +2200,6 @@ static int sctp_setsockopt_autoclose(struct sock *sk, char __user *optval,  		return -EINVAL;  	if (copy_from_user(&sp->autoclose, optval, optlen))  		return -EFAULT; -	/* make sure it won't exceed MAX_SCHEDULE_TIMEOUT */ -	sp->autoclose = min_t(long, sp->autoclose, MAX_SCHEDULE_TIMEOUT / HZ);  	return 0;  } diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c index 6b3952961b85..60ffbd067ff7 100644 --- a/net/sctp/sysctl.c +++ b/net/sctp/sysctl.c @@ -53,6 +53,10 @@ static int sack_timer_min = 1;  static int sack_timer_max = 500;  static int addr_scope_max = 3; /* check sctp_scope_policy_t in include/net/sctp/constants.h for max entries */  static int rwnd_scale_max = 16; +static unsigned long max_autoclose_min = 0; +static unsigned long max_autoclose_max = +	(MAX_SCHEDULE_TIMEOUT / HZ > UINT_MAX) +	? UINT_MAX : MAX_SCHEDULE_TIMEOUT / HZ;  extern long sysctl_sctp_mem[3];  extern int sysctl_sctp_rmem[3]; @@ -258,6 +262,15 @@ static ctl_table sctp_table[] = {  		.extra1		= &one,  		.extra2		= &rwnd_scale_max,  	}, +	{ +		.procname	= "max_autoclose", +		.data		= &sctp_max_autoclose, +		.maxlen		= sizeof(unsigned long), +		.mode		= 0644, +		.proc_handler	= &proc_doulongvec_minmax, +		.extra1		= &max_autoclose_min, +		.extra2		= &max_autoclose_max, +	},  	{ /* sentinel */ }  }; | 
