Cong Wang wrote:
From: Cong Wang <redacted>
It is hard to observe packet drops without increase relevant
drop counters, here we should increase sk->sk_drops which is
a protocol-independent counter. Fortunately psock is always
assocaited with a struct sock, we can just use psock->sk.
Cc: John Fastabend <john.fastabend@gmail.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Jakub Sitnicki <jakub@cloudflare.com>
Cc: Lorenz Bauer <redacted>
Signed-off-by: Cong Wang <redacted>
[...]
quoted hunk ↗ jump to hunk
static void sk_psock_backlog(struct work_struct *work)
{
struct sk_psock *psock = container_of(work, struct sk_psock, work);@@ -617,7 +623,7 @@ static void sk_psock_backlog(struct work_struct *work)
/* Hard errors break pipe and stop xmit. */
sk_psock_report_error(psock, ret ? -ret : EPIPE);
sk_psock_clear_state(psock, SK_PSOCK_TX_ENABLED);
- kfree_skb(skb);
+ sock_drop(psock->sk, skb);
goto end;
}
off += ret;
@@ -625,7 +631,7 @@ static void sk_psock_backlog(struct work_struct *work)
} while (len);
if (!ingress)
- kfree_skb(skb);
+ sock_drop(psock->sk, skb);
This is not a dropped skb this was sent via skb_send_sock().
The rest LGTM thanks.