diff options
Diffstat (limited to 'net/sctp/ulpqueue.c')
-rw-r--r-- | net/sctp/ulpqueue.c | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/net/sctp/ulpqueue.c b/net/sctp/ulpqueue.c index e1d144275f97..f4759a9bdaee 100644 --- a/net/sctp/ulpqueue.c +++ b/net/sctp/ulpqueue.c | |||
@@ -191,7 +191,7 @@ int sctp_ulpq_tail_event(struct sctp_ulpq *ulpq, struct sctp_ulpevent *event) | |||
191 | queue = &sk->sk_receive_queue; | 191 | queue = &sk->sk_receive_queue; |
192 | } else if (ulpq->pd_mode) { | 192 | } else if (ulpq->pd_mode) { |
193 | if (event->msg_flags & MSG_NOTIFICATION) | 193 | if (event->msg_flags & MSG_NOTIFICATION) |
194 | queue = &sctp_sk(sk)->pd_lobby; | 194 | queue = &sctp_sk(sk)->pd_lobby; |
195 | else { | 195 | else { |
196 | clear_pd = event->msg_flags & MSG_EOR; | 196 | clear_pd = event->msg_flags & MSG_EOR; |
197 | queue = &sk->sk_receive_queue; | 197 | queue = &sk->sk_receive_queue; |
@@ -298,32 +298,32 @@ static struct sctp_ulpevent *sctp_make_reassembled_event(struct sk_buff_head *qu | |||
298 | */ | 298 | */ |
299 | if (last) | 299 | if (last) |
300 | last->next = pos; | 300 | last->next = pos; |
301 | else { | 301 | else { |
302 | if (skb_cloned(f_frag)) { | 302 | if (skb_cloned(f_frag)) { |
303 | /* This is a cloned skb, we can't just modify | 303 | /* This is a cloned skb, we can't just modify |
304 | * the frag_list. We need a new skb to do that. | 304 | * the frag_list. We need a new skb to do that. |
305 | * Instead of calling skb_unshare(), we'll do it | 305 | * Instead of calling skb_unshare(), we'll do it |
306 | * ourselves since we need to delay the free. | 306 | * ourselves since we need to delay the free. |
307 | */ | 307 | */ |
308 | new = skb_copy(f_frag, GFP_ATOMIC); | 308 | new = skb_copy(f_frag, GFP_ATOMIC); |
309 | if (!new) | 309 | if (!new) |
310 | return NULL; /* try again later */ | 310 | return NULL; /* try again later */ |
311 | 311 | ||
312 | sctp_skb_set_owner_r(new, f_frag->sk); | 312 | sctp_skb_set_owner_r(new, f_frag->sk); |
313 | 313 | ||
314 | skb_shinfo(new)->frag_list = pos; | 314 | skb_shinfo(new)->frag_list = pos; |
315 | } else | 315 | } else |
316 | skb_shinfo(f_frag)->frag_list = pos; | 316 | skb_shinfo(f_frag)->frag_list = pos; |
317 | } | 317 | } |
318 | 318 | ||
319 | /* Remove the first fragment from the reassembly queue. */ | 319 | /* Remove the first fragment from the reassembly queue. */ |
320 | __skb_unlink(f_frag, queue); | 320 | __skb_unlink(f_frag, queue); |
321 | 321 | ||
322 | /* if we did unshare, then free the old skb and re-assign */ | 322 | /* if we did unshare, then free the old skb and re-assign */ |
323 | if (new) { | 323 | if (new) { |
324 | kfree_skb(f_frag); | 324 | kfree_skb(f_frag); |
325 | f_frag = new; | 325 | f_frag = new; |
326 | } | 326 | } |
327 | 327 | ||
328 | while (pos) { | 328 | while (pos) { |
329 | 329 | ||
@@ -335,7 +335,7 @@ static struct sctp_ulpevent *sctp_make_reassembled_event(struct sk_buff_head *qu | |||
335 | 335 | ||
336 | /* Remove the fragment from the reassembly queue. */ | 336 | /* Remove the fragment from the reassembly queue. */ |
337 | __skb_unlink(pos, queue); | 337 | __skb_unlink(pos, queue); |
338 | 338 | ||
339 | /* Break if we have reached the last fragment. */ | 339 | /* Break if we have reached the last fragment. */ |
340 | if (pos == l_frag) | 340 | if (pos == l_frag) |
341 | break; | 341 | break; |
@@ -624,7 +624,7 @@ static inline void sctp_ulpq_store_ordered(struct sctp_ulpq *ulpq, | |||
624 | 624 | ||
625 | sid = event->stream; | 625 | sid = event->stream; |
626 | ssn = event->ssn; | 626 | ssn = event->ssn; |
627 | 627 | ||
628 | cevent = (struct sctp_ulpevent *) pos->cb; | 628 | cevent = (struct sctp_ulpevent *) pos->cb; |
629 | csid = cevent->stream; | 629 | csid = cevent->stream; |
630 | cssn = cevent->ssn; | 630 | cssn = cevent->ssn; |
@@ -718,11 +718,11 @@ static inline void sctp_ulpq_reap_ordered(struct sctp_ulpq *ulpq) | |||
718 | if (cssn != sctp_ssn_peek(in, csid)) | 718 | if (cssn != sctp_ssn_peek(in, csid)) |
719 | break; | 719 | break; |
720 | 720 | ||
721 | /* Found it, so mark in the ssnmap. */ | 721 | /* Found it, so mark in the ssnmap. */ |
722 | sctp_ssn_next(in, csid); | 722 | sctp_ssn_next(in, csid); |
723 | 723 | ||
724 | __skb_unlink(pos, &ulpq->lobby); | 724 | __skb_unlink(pos, &ulpq->lobby); |
725 | if (!event) { | 725 | if (!event) { |
726 | /* Create a temporary list to collect chunks on. */ | 726 | /* Create a temporary list to collect chunks on. */ |
727 | event = sctp_skb2event(pos); | 727 | event = sctp_skb2event(pos); |
728 | __skb_queue_tail(&temp, sctp_event2skb(event)); | 728 | __skb_queue_tail(&temp, sctp_event2skb(event)); |
@@ -755,7 +755,7 @@ void sctp_ulpq_skip(struct sctp_ulpq *ulpq, __u16 sid, __u16 ssn) | |||
755 | sctp_ssn_skip(in, sid, ssn); | 755 | sctp_ssn_skip(in, sid, ssn); |
756 | 756 | ||
757 | /* Go find any other chunks that were waiting for | 757 | /* Go find any other chunks that were waiting for |
758 | * ordering and deliver them if needed. | 758 | * ordering and deliver them if needed. |
759 | */ | 759 | */ |
760 | sctp_ulpq_reap_ordered(ulpq); | 760 | sctp_ulpq_reap_ordered(ulpq); |
761 | return; | 761 | return; |
@@ -849,7 +849,7 @@ void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, | |||
849 | if (chunk) { | 849 | if (chunk) { |
850 | needed = ntohs(chunk->chunk_hdr->length); | 850 | needed = ntohs(chunk->chunk_hdr->length); |
851 | needed -= sizeof(sctp_data_chunk_t); | 851 | needed -= sizeof(sctp_data_chunk_t); |
852 | } else | 852 | } else |
853 | needed = SCTP_DEFAULT_MAXWINDOW; | 853 | needed = SCTP_DEFAULT_MAXWINDOW; |
854 | 854 | ||
855 | freed = 0; | 855 | freed = 0; |
@@ -866,7 +866,7 @@ void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, | |||
866 | tsn = ntohl(chunk->subh.data_hdr->tsn); | 866 | tsn = ntohl(chunk->subh.data_hdr->tsn); |
867 | sctp_tsnmap_mark(&asoc->peer.tsn_map, tsn); | 867 | sctp_tsnmap_mark(&asoc->peer.tsn_map, tsn); |
868 | sctp_ulpq_tail_data(ulpq, chunk, gfp); | 868 | sctp_ulpq_tail_data(ulpq, chunk, gfp); |
869 | 869 | ||
870 | sctp_ulpq_partial_delivery(ulpq, chunk, gfp); | 870 | sctp_ulpq_partial_delivery(ulpq, chunk, gfp); |
871 | } | 871 | } |
872 | 872 | ||