Skip to content

Commit

Permalink
[NETFILTER]: nf_conntrack_sctp: don't take sctp_lock once per chunk
Browse files Browse the repository at this point in the history
Don't take and release the lock once per SCTP chunk, simply hold it
the entire time while iterating through the chunks.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Patrick McHardy authored and David S. Miller committed Jan 28, 2008
1 parent efe9f68 commit 4a64830
Showing 1 changed file with 2 additions and 3 deletions.
5 changes: 2 additions & 3 deletions net/netfilter/nf_conntrack_proto_sctp.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,9 +325,8 @@ static int sctp_packet(struct nf_conn *ct,
}

old_state = new_state = SCTP_CONNTRACK_MAX;
write_lock_bh(&sctp_lock);
for_each_sctp_chunk (skb, sch, _sch, offset, dataoff, count) {
write_lock_bh(&sctp_lock);

/* Special cases of Verification tag check (Sec 8.5.1) */
if (sch->type == SCTP_CID_INIT) {
/* Sec 8.5.1 (A) */
Expand Down Expand Up @@ -378,8 +377,8 @@ static int sctp_packet(struct nf_conn *ct,
ct->proto.sctp.state = new_state;
if (old_state != new_state)
nf_conntrack_event_cache(IPCT_PROTOINFO, skb);
write_unlock_bh(&sctp_lock);
}
write_unlock_bh(&sctp_lock);

nf_ct_refresh_acct(ct, ctinfo, skb, *sctp_timeouts[new_state]);

Expand Down

0 comments on commit 4a64830

Please sign in to comment.