diff options
| -rw-r--r-- | net/netfilter/ipvs/ip_vs_conn.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c index d8f7e8ef67b4..ff04e9edbed6 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c | |||
| @@ -162,6 +162,7 @@ static inline int ip_vs_conn_hash(struct ip_vs_conn *cp) | |||
| 162 | hash = ip_vs_conn_hashkey(cp->af, cp->protocol, &cp->caddr, cp->cport); | 162 | hash = ip_vs_conn_hashkey(cp->af, cp->protocol, &cp->caddr, cp->cport); |
| 163 | 163 | ||
| 164 | ct_write_lock(hash); | 164 | ct_write_lock(hash); |
| 165 | spin_lock(&cp->lock); | ||
| 165 | 166 | ||
| 166 | if (!(cp->flags & IP_VS_CONN_F_HASHED)) { | 167 | if (!(cp->flags & IP_VS_CONN_F_HASHED)) { |
| 167 | list_add(&cp->c_list, &ip_vs_conn_tab[hash]); | 168 | list_add(&cp->c_list, &ip_vs_conn_tab[hash]); |
| @@ -174,6 +175,7 @@ static inline int ip_vs_conn_hash(struct ip_vs_conn *cp) | |||
| 174 | ret = 0; | 175 | ret = 0; |
| 175 | } | 176 | } |
| 176 | 177 | ||
| 178 | spin_unlock(&cp->lock); | ||
| 177 | ct_write_unlock(hash); | 179 | ct_write_unlock(hash); |
| 178 | 180 | ||
| 179 | return ret; | 181 | return ret; |
| @@ -193,6 +195,7 @@ static inline int ip_vs_conn_unhash(struct ip_vs_conn *cp) | |||
| 193 | hash = ip_vs_conn_hashkey(cp->af, cp->protocol, &cp->caddr, cp->cport); | 195 | hash = ip_vs_conn_hashkey(cp->af, cp->protocol, &cp->caddr, cp->cport); |
| 194 | 196 | ||
| 195 | ct_write_lock(hash); | 197 | ct_write_lock(hash); |
| 198 | spin_lock(&cp->lock); | ||
| 196 | 199 | ||
| 197 | if (cp->flags & IP_VS_CONN_F_HASHED) { | 200 | if (cp->flags & IP_VS_CONN_F_HASHED) { |
| 198 | list_del(&cp->c_list); | 201 | list_del(&cp->c_list); |
| @@ -202,6 +205,7 @@ static inline int ip_vs_conn_unhash(struct ip_vs_conn *cp) | |||
| 202 | } else | 205 | } else |
| 203 | ret = 0; | 206 | ret = 0; |
| 204 | 207 | ||
| 208 | spin_unlock(&cp->lock); | ||
| 205 | ct_write_unlock(hash); | 209 | ct_write_unlock(hash); |
| 206 | 210 | ||
| 207 | return ret; | 211 | return ret; |
