diff options
Diffstat (limited to 'net/sctp/sm_make_chunk.c')
| -rw-r--r-- | net/sctp/sm_make_chunk.c | 15 | 
1 files changed, 2 insertions, 13 deletions
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index be783a3761c..8d18f570c2e 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c @@ -1939,7 +1939,6 @@ int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid,  	 * association.  	 */  	if (!asoc->temp) { -		int assoc_id;  		int error;  		asoc->ssnmap = sctp_ssnmap_new(asoc->c.sinit_max_instreams, @@ -1947,19 +1946,9 @@ int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid,  		if (!asoc->ssnmap)  			goto clean_up; -	retry: -		if (unlikely(!idr_pre_get(&sctp_assocs_id, gfp))) +		error = sctp_assoc_set_id(asoc, gfp); +		if (error)  			goto clean_up; -		spin_lock_bh(&sctp_assocs_id_lock); -		error = idr_get_new_above(&sctp_assocs_id, (void *)asoc, 1, -					  &assoc_id); -		spin_unlock_bh(&sctp_assocs_id_lock); -		if (error == -EAGAIN) -			goto retry; -		else if (error) -			goto clean_up; - -		asoc->assoc_id = (sctp_assoc_t) assoc_id;  	}  	/* ADDIP Section 4.1 ASCONF Chunk Procedures  | 
