diff options
| -rw-r--r-- | kernel/bpf/sockmap.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/bpf/sockmap.c b/kernel/bpf/sockmap.c index d2bda5aa25d7..8ddf326b3ade 100644 --- a/kernel/bpf/sockmap.c +++ b/kernel/bpf/sockmap.c | |||
| @@ -211,6 +211,12 @@ static void bpf_tcp_close(struct sock *sk, long timeout) | |||
| 211 | close_fun = psock->save_close; | 211 | close_fun = psock->save_close; |
| 212 | 212 | ||
| 213 | write_lock_bh(&sk->sk_callback_lock); | 213 | write_lock_bh(&sk->sk_callback_lock); |
| 214 | if (psock->cork) { | ||
| 215 | free_start_sg(psock->sock, psock->cork); | ||
| 216 | kfree(psock->cork); | ||
| 217 | psock->cork = NULL; | ||
| 218 | } | ||
| 219 | |||
| 214 | list_for_each_entry_safe(md, mtmp, &psock->ingress, list) { | 220 | list_for_each_entry_safe(md, mtmp, &psock->ingress, list) { |
| 215 | list_del(&md->list); | 221 | list_del(&md->list); |
| 216 | free_start_sg(psock->sock, md); | 222 | free_start_sg(psock->sock, md); |
