diff options
author | Jeff Layton <jlayton@redhat.com> | 2013-04-29 19:21:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-29 21:28:41 -0400 |
commit | 713e00a324e49e8adee2753e1bb7bc3806bb53b6 (patch) | |
tree | b3928c45c44cf4dc9e54e870d429e656d73a7984 /net/sctp/associola.c | |
parent | a66c04b4534f9b25e1241dff9a9d94dff9fd66f8 (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.c | 16 |
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); | |||
66 | static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc); | 66 | static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc); |
67 | static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc); | 67 | static 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 | */ | ||
73 | static 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(); |