diff options
-rw-r--r-- | net/netfilter/nf_conntrack_proto_sctp.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/net/netfilter/nf_conntrack_proto_sctp.c b/net/netfilter/nf_conntrack_proto_sctp.c index 7baabc045342..177e8f60aa1c 100644 --- a/net/netfilter/nf_conntrack_proto_sctp.c +++ b/net/netfilter/nf_conntrack_proto_sctp.c | |||
@@ -325,9 +325,8 @@ static int sctp_packet(struct nf_conn *ct, | |||
325 | } | 325 | } |
326 | 326 | ||
327 | old_state = new_state = SCTP_CONNTRACK_MAX; | 327 | old_state = new_state = SCTP_CONNTRACK_MAX; |
328 | write_lock_bh(&sctp_lock); | ||
328 | for_each_sctp_chunk (skb, sch, _sch, offset, dataoff, count) { | 329 | for_each_sctp_chunk (skb, sch, _sch, offset, dataoff, count) { |
329 | write_lock_bh(&sctp_lock); | ||
330 | |||
331 | /* Special cases of Verification tag check (Sec 8.5.1) */ | 330 | /* Special cases of Verification tag check (Sec 8.5.1) */ |
332 | if (sch->type == SCTP_CID_INIT) { | 331 | if (sch->type == SCTP_CID_INIT) { |
333 | /* Sec 8.5.1 (A) */ | 332 | /* Sec 8.5.1 (A) */ |
@@ -378,8 +377,8 @@ static int sctp_packet(struct nf_conn *ct, | |||
378 | ct->proto.sctp.state = new_state; | 377 | ct->proto.sctp.state = new_state; |
379 | if (old_state != new_state) | 378 | if (old_state != new_state) |
380 | nf_conntrack_event_cache(IPCT_PROTOINFO, skb); | 379 | nf_conntrack_event_cache(IPCT_PROTOINFO, skb); |
381 | write_unlock_bh(&sctp_lock); | ||
382 | } | 380 | } |
381 | write_unlock_bh(&sctp_lock); | ||
383 | 382 | ||
384 | nf_ct_refresh_acct(ct, ctinfo, skb, *sctp_timeouts[new_state]); | 383 | nf_ct_refresh_acct(ct, ctinfo, skb, *sctp_timeouts[new_state]); |
385 | 384 | ||