sctp: use event->chunk when it's valid
Commit52253db924
("sctp: also point GSO head_skb to the sk when it's available") used event->chunk->head_skb to get the head_skb in sctp_ulpevent_set_owner(). But at that moment, the event->chunk was NULL, as it cloned the skb in sctp_ulpevent_make_rcvmsg(). Therefore, that patch didn't really work. This patch is to move the event->chunk initialization before calling sctp_ulpevent_receive_data() so that it uses event->chunk when it's valid. Fixes:52253db924
("sctp: also point GSO head_skb to the sk when it's available") Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
bbec7802c6
Коммит
1fe323aa1b
|
@ -702,14 +702,14 @@ struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc,
|
|||
*/
|
||||
sctp_ulpevent_init(event, 0, skb->len + sizeof(struct sk_buff));
|
||||
|
||||
sctp_ulpevent_receive_data(event, asoc);
|
||||
|
||||
/* And hold the chunk as we need it for getting the IP headers
|
||||
* later in recvmsg
|
||||
*/
|
||||
sctp_chunk_hold(chunk);
|
||||
event->chunk = chunk;
|
||||
|
||||
sctp_ulpevent_receive_data(event, asoc);
|
||||
|
||||
event->stream = ntohs(chunk->subh.data_hdr->stream);
|
||||
event->ssn = ntohs(chunk->subh.data_hdr->ssn);
|
||||
event->ppid = chunk->subh.data_hdr->ppid;
|
||||
|
|
Загрузка…
Ссылка в новой задаче