aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter
diff options
context:
space:
mode:
authorJulian Anastasov <ja@ssi.bg>2013-03-22 05:46:45 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2013-04-01 18:23:52 -0400
commit9be52aba7a7fdaaad82d88b2e66b0d215877a1fd (patch)
tree0c00c2c54e210ec864618f079a1f5dfb21788341 /net/netfilter
parentc0d0c0a1c0d35b76f3859b69110f614056d845fe (diff)
ipvs: convert sed scheduler to rcu
The schedule method now needs _rcu list-traversal primitive for svc->destinations. Signed-off-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'net/netfilter')
-rw-r--r--net/netfilter/ipvs/ip_vs_sed.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/netfilter/ipvs/ip_vs_sed.c b/net/netfilter/ipvs/ip_vs_sed.c
index 89ead246ed3d..d01187084b7f 100644
--- a/net/netfilter/ipvs/ip_vs_sed.c
+++ b/net/netfilter/ipvs/ip_vs_sed.c
@@ -79,7 +79,7 @@ ip_vs_sed_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
79 * new connections. 79 * new connections.
80 */ 80 */
81 81
82 list_for_each_entry(dest, &svc->destinations, n_list) { 82 list_for_each_entry_rcu(dest, &svc->destinations, n_list) {
83 if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) && 83 if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) &&
84 atomic_read(&dest->weight) > 0) { 84 atomic_read(&dest->weight) > 0) {
85 least = dest; 85 least = dest;
@@ -94,7 +94,7 @@ ip_vs_sed_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
94 * Find the destination with the least load. 94 * Find the destination with the least load.
95 */ 95 */
96 nextstage: 96 nextstage:
97 list_for_each_entry_continue(dest, &svc->destinations, n_list) { 97 list_for_each_entry_continue_rcu(dest, &svc->destinations, n_list) {
98 if (dest->flags & IP_VS_DEST_F_OVERLOAD) 98 if (dest->flags & IP_VS_DEST_F_OVERLOAD)
99 continue; 99 continue;
100 doh = ip_vs_sed_dest_overhead(dest); 100 doh = ip_vs_sed_dest_overhead(dest);