aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/associola.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2013-04-29 19:21:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-04-29 21:28:41 -0400
commit713e00a324e49e8adee2753e1bb7bc3806bb53b6 (patch)
treeb3928c45c44cf4dc9e54e870d429e656d73a7984 /net/sctp/associola.c
parenta66c04b4534f9b25e1241dff9a9d94dff9fd66f8 (diff)
sctp: convert sctp_assoc_set_id() to use idr_alloc_cyclic()
Signed-off-by: Jeff Layton <jlayton@redhat.com> Cc: Vlad Yasevich <vyasevich@gmail.com> Cc: Sridhar Samudrala <sri@us.ibm.com> Cc: Neil Horman <nhorman@tuxdriver.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'net/sctp/associola.c')
-rw-r--r--net/sctp/associola.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index d2709e2b7be6..fa261a3594c2 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -66,13 +66,6 @@ static void sctp_assoc_bh_rcv(struct work_struct *work);
66static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc); 66static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc);
67static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc); 67static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc);
68 68
69/* Keep track of the new idr low so that we don't re-use association id
70 * numbers too fast. It is protected by they idr spin lock is in the
71 * range of 1 - INT_MAX.
72 */
73static u32 idr_low = 1;
74
75
76/* 1st Level Abstractions. */ 69/* 1st Level Abstractions. */
77 70
78/* Initialize a new association from provided memory. */ 71/* Initialize a new association from provided memory. */
@@ -1601,13 +1594,8 @@ int sctp_assoc_set_id(struct sctp_association *asoc, gfp_t gfp)
1601 if (preload) 1594 if (preload)
1602 idr_preload(gfp); 1595 idr_preload(gfp);
1603 spin_lock_bh(&sctp_assocs_id_lock); 1596 spin_lock_bh(&sctp_assocs_id_lock);
1604 /* 0 is not a valid id, idr_low is always >= 1 */ 1597 /* 0 is not a valid assoc_id, must be >= 1 */
1605 ret = idr_alloc(&sctp_assocs_id, asoc, idr_low, 0, GFP_NOWAIT); 1598 ret = idr_alloc_cyclic(&sctp_assocs_id, asoc, 1, 0, GFP_NOWAIT);
1606 if (ret >= 0) {
1607 idr_low = ret + 1;
1608 if (idr_low == INT_MAX)
1609 idr_low = 1;
1610 }
1611 spin_unlock_bh(&sctp_assocs_id_lock); 1599 spin_unlock_bh(&sctp_assocs_id_lock);
1612 if (preload) 1600 if (preload)
1613 idr_preload_end(); 1601 idr_preload_end();