diff options
author | David S. Miller <davem@davemloft.net> | 2005-07-09 00:47:49 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-07-09 00:47:49 -0400 |
commit | 79af02c2538d54ff0dcd3f43646f506207f2ee62 (patch) | |
tree | 0e77872e7ac3da31dd5d77f260a9ae391896869d /net/sctp/sm_make_chunk.c | |
parent | 9c05989bb2264f0fa4fc95f81d2c4e6aa2eaa24d (diff) |
[SCTP]: Use struct list_head for chunk lists, not sk_buff_head.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/sm_make_chunk.c')
-rw-r--r-- | net/sctp/sm_make_chunk.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 5baed9bb7de5..773cd93fa3d0 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -1003,6 +1003,7 @@ struct sctp_chunk *sctp_chunkify(struct sk_buff *skb, | |||
1003 | SCTP_DEBUG_PRINTK("chunkifying skb %p w/o an sk\n", skb); | 1003 | SCTP_DEBUG_PRINTK("chunkifying skb %p w/o an sk\n", skb); |
1004 | } | 1004 | } |
1005 | 1005 | ||
1006 | INIT_LIST_HEAD(&retval->list); | ||
1006 | retval->skb = skb; | 1007 | retval->skb = skb; |
1007 | retval->asoc = (struct sctp_association *)asoc; | 1008 | retval->asoc = (struct sctp_association *)asoc; |
1008 | retval->resent = 0; | 1009 | retval->resent = 0; |
@@ -1116,8 +1117,7 @@ static void sctp_chunk_destroy(struct sctp_chunk *chunk) | |||
1116 | /* Possibly, free the chunk. */ | 1117 | /* Possibly, free the chunk. */ |
1117 | void sctp_chunk_free(struct sctp_chunk *chunk) | 1118 | void sctp_chunk_free(struct sctp_chunk *chunk) |
1118 | { | 1119 | { |
1119 | /* Make sure that we are not on any list. */ | 1120 | BUG_ON(!list_empty(&chunk->list)); |
1120 | skb_unlink((struct sk_buff *) chunk); | ||
1121 | list_del_init(&chunk->transmitted_list); | 1121 | list_del_init(&chunk->transmitted_list); |
1122 | 1122 | ||
1123 | /* Release our reference on the message tracker. */ | 1123 | /* Release our reference on the message tracker. */ |
@@ -2739,8 +2739,12 @@ int sctp_process_asconf_ack(struct sctp_association *asoc, | |||
2739 | asoc->addip_last_asconf = NULL; | 2739 | asoc->addip_last_asconf = NULL; |
2740 | 2740 | ||
2741 | /* Send the next asconf chunk from the addip chunk queue. */ | 2741 | /* Send the next asconf chunk from the addip chunk queue. */ |
2742 | asconf = (struct sctp_chunk *)__skb_dequeue(&asoc->addip_chunks); | 2742 | if (!list_empty(&asoc->addip_chunk_list)) { |
2743 | if (asconf) { | 2743 | struct list_head *entry = asoc->addip_chunk_list.next; |
2744 | asconf = list_entry(entry, struct sctp_chunk, list); | ||
2745 | |||
2746 | list_del_init(entry); | ||
2747 | |||
2744 | /* Hold the chunk until an ASCONF_ACK is received. */ | 2748 | /* Hold the chunk until an ASCONF_ACK is received. */ |
2745 | sctp_chunk_hold(asconf); | 2749 | sctp_chunk_hold(asconf); |
2746 | if (sctp_primitive_ASCONF(asoc, asconf)) | 2750 | if (sctp_primitive_ASCONF(asoc, asconf)) |