diff options
Diffstat (limited to 'net/core/skmsg.c')
| -rw-r--r-- | net/core/skmsg.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/net/core/skmsg.c b/net/core/skmsg.c index cc94d921476c..93bffaad2135 100644 --- a/net/core/skmsg.c +++ b/net/core/skmsg.c  | |||
| @@ -411,6 +411,7 @@ static int sk_psock_skb_ingress(struct sk_psock *psock, struct sk_buff *skb) | |||
| 411 | sk_mem_charge(sk, skb->len); | 411 | sk_mem_charge(sk, skb->len); | 
| 412 | copied = skb->len; | 412 | copied = skb->len; | 
| 413 | msg->sg.start = 0; | 413 | msg->sg.start = 0; | 
| 414 | msg->sg.size = copied; | ||
| 414 | msg->sg.end = num_sge == MAX_MSG_FRAGS ? 0 : num_sge; | 415 | msg->sg.end = num_sge == MAX_MSG_FRAGS ? 0 : num_sge; | 
| 415 | msg->skb = skb; | 416 | msg->skb = skb; | 
| 416 | 417 | ||
| @@ -554,8 +555,10 @@ static void sk_psock_destroy_deferred(struct work_struct *gc) | |||
| 554 | struct sk_psock *psock = container_of(gc, struct sk_psock, gc); | 555 | struct sk_psock *psock = container_of(gc, struct sk_psock, gc); | 
| 555 | 556 | ||
| 556 | /* No sk_callback_lock since already detached. */ | 557 | /* No sk_callback_lock since already detached. */ | 
| 557 | strp_stop(&psock->parser.strp); | 558 | |
| 558 | strp_done(&psock->parser.strp); | 559 | /* Parser has been stopped */ | 
| 560 | if (psock->progs.skb_parser) | ||
| 561 | strp_done(&psock->parser.strp); | ||
| 559 | 562 | ||
| 560 | cancel_work_sync(&psock->work); | 563 | cancel_work_sync(&psock->work); | 
| 561 | 564 | ||
