From nobody Tue Dec 16 14:49:38 2025 Received: from mail-oi1-f171.google.com (mail-oi1-f171.google.com [209.85.167.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2327182D3C for ; Thu, 30 May 2024 21:46:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105621; cv=none; b=Okt15J/LFcCtSc4L4WaMV2qVWxQqcTlk5s7t2S0RIPtbgOKPDYMMC9rA4GzWmuInRRN3050iW7Pdi74oDzJhv91NxhmvW1PktsuVdSuYy3mABETMBM5ncmNUxnw13Q5fArz2ln4DaRxmDjd2XmqtS9u+FmMZ/PgnUwF8W11/ImY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105621; c=relaxed/simple; bh=W2h/LnRyHWTHgTveKmP08DBvMQDEDLRwZs6glWTSns0=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=DRRicDsqVckx2DKCIW4nsLnIKPDZHVlrYvJkWdWsx6KqTdU4HaaJQb19BDhEXfKm2OhFZHJhzsxDt30KH+DAVcASutSzNh/ggfBlgjDnkUaM0eFciBsTLSHYzbhXXhpC476lgQ6oCY3+BH90InuztkGGix0KCRHh8gPb01PPWJA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com; spf=pass smtp.mailfrom=cloudflare.com; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b=JGNDl/Iz; arc=none smtp.client-ip=209.85.167.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b="JGNDl/Iz" Received: by mail-oi1-f171.google.com with SMTP id 5614622812f47-3d1bc6e5f01so773207b6e.0 for ; Thu, 30 May 2024 14:46:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google09082023; t=1717105619; x=1717710419; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=iU0kmb1Q8d2eQhrqkYXLZ8UzXfCX7B5qnp9jHajfNfU=; b=JGNDl/IzYCqu2Mrrfd9qRTedLOgFLIvopB1c16Vy89CmFUNhrMWZxKhpF5EQ7SHdid Wp8VUs5BE5Acep/CtY+740C74H+yvWvZHaWEypm2JTOFIz0pYAeWr8xvc+n5k8+rE8xP FvQQ2qi1766/uy3wlobRWq9ehBzwaB2C/ogKkgUbwmdwzEXeruDN5ge/6HXU5cZFutK3 BsfntBDRMIerX+t4fJiEMa0k15GVUxBwBsKNBTCZcRck9n8fIprf2LaW61iSVGiTn2uq EBjriRF14HAKNESp1x4AjUKEWDJNpcmhMPcka8uHX/2eUsmA+OvEo3N/7F1FW1KQhXy7 KL/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717105619; x=1717710419; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=iU0kmb1Q8d2eQhrqkYXLZ8UzXfCX7B5qnp9jHajfNfU=; b=ZU5PKYwmQGsHV1GCJ8a51MjgQdcJbvcCJuXUI+Tky24Gk+tJeVR18Pre5fjNt//cG1 a3kFTFy67816zgSeWnE5m3u3znGlUtgES64heYfM/T/keZ1F16rcajOcdIdtXV3GF2pS b8YdV6y7qLfBVXjioekVU+kwAdoAF/BD6xYcTUIKWvGhGkNhln7Fb2yS+A0miIJl73s/ 71782OMgVLghEgsmKVNzlJqRTSUPAyvXGlPg0lIVc1slILIlR1AYXBTi8Yu7DvifbFGj ggOpukwmx7FgY6x/3+T5OQAQQkBCU6qnyaQpIe60NZBx1RTCYX4gVOj7odPSecr1gZs8 hytQ== X-Forwarded-Encrypted: i=1; AJvYcCUbUE1ewFy0SpbvIWhfPMV0juF+pip3xG6ISnLewZ03W1/dyd9vQOcXzf8eQgWR4r0nS56g2vj5To0RRcmwlgoIoC84snOrRgNrAnoO X-Gm-Message-State: AOJu0Ywzst7nweVfasrqaTzIVez/Iu6gdIdaSqJQU7YjmXgzKf6ABAdB hx3aKkoWPIUSzKlhUUAj7Ne7BQ98J5JOA9UG+jr6+05IZhE6MOt+zMF+F5exeb8= X-Google-Smtp-Source: AGHT+IHgbXLNJseQlQk0+KenNC/IVwEM1DAl54VBPXVciNudX/cszFcDimmnbghb5SinYarxHkVXFQ== X-Received: by 2002:aca:1119:0:b0:3c9:966e:32ea with SMTP id 5614622812f47-3d1e34786demr29137b6e.2.1717105618801; Thu, 30 May 2024 14:46:58 -0700 (PDT) Received: from debian.debian ([2a09:bac5:7a49:f9b::18e:1c]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6ae4a73e4absm1963286d6.6.2024.05.30.14.46.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 14:46:58 -0700 (PDT) Date: Thu, 30 May 2024 14:46:56 -0700 From: Yan Zhai To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , Abhishek Chauhan , Mina Almasry , Florian Westphal , Alexander Lobakin , David Howells , Jiri Pirko , Daniel Borkmann , Sebastian Andrzej Siewior , Lorenzo Bianconi , Pavel Begunkov , linux-kernel@vger.kernel.org, kernel-team@cloudflare.com, Jesper Dangaard Brouer Subject: [RFC net-next 1/6] net: add kfree_skb_for_sk function Message-ID: <9be3733eee16bb81a7e8e2e57ebcc008f95cae08.1717105215.git.yan@cloudflare.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Implement a new kfree_skb_for_sk to replace kfree_skb_reason on a few local receive path. The function accepts an extra receiving socket argument, which will be set in skb->cb for kfree_skb/consume_skb tracepoint consumption. With this extra bit of information, it will be easier to attribute dropped packets to netns/containers and sockets/services for performance and error monitoring purpose. Signed-off-by: Yan Zhai --- include/linux/skbuff.h | 48 ++++++++++++++++++++++++++++++++++++++++-- net/core/dev.c | 21 +++++++----------- net/core/skbuff.c | 29 +++++++++++++------------ 3 files changed, 70 insertions(+), 28 deletions(-) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index fe7d8dbef77e..66f5b06798f2 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -1251,8 +1251,52 @@ static inline bool skb_data_unref(const struct sk_bu= ff *skb, return true; } =20 -void __fix_address -kfree_skb_reason(struct sk_buff *skb, enum skb_drop_reason reason); +/* + * Some protocol will clear or reuse skb->dev field for other purposes. F= or + * example, TCP stack would reuse the pointer for out of order packet hand= ling. + * This caused some problem for drop monitoring on kfree_skb tracepoint, s= ince + * no other fields of an skb provides netns information. In addition, it = is + * also complicated to recover receive socket information for dropped pack= ets, + * because the socket lookup can be an sk-lookup BPF program. + * + * This can be addressed by just passing the rx socket to the tracepoint, + * because it also has valid netns binding. + */ +struct kfree_skb_cb { + enum skb_drop_reason reason; /* used only by dev_kfree_skb_irq */ + struct sock *rx_sk; +}; + +#define KFREE_SKB_CB(skb) ((struct kfree_skb_cb *)(skb)->cb) + +/* Save cb->rx_sk before calling kfree_skb/consume_skb tracepoint, and res= tore + * after the tracepoint. This is necessary because some skb destructor mig= ht + * rely on values in skb->cb, e.g. unix_destruct_scm. + */ +#define _call_trace_kfree_skb(action, skb, sk, ...) do { \ + if (trace_##action##_skb_enabled()) { \ + struct kfree_skb_cb saved; \ + saved.rx_sk =3D KFREE_SKB_CB(skb)->rx_sk; \ + KFREE_SKB_CB(skb)->rx_sk =3D sk; \ + trace_##action##_skb((skb), ## __VA_ARGS__); \ + KFREE_SKB_CB(skb)->rx_sk =3D saved.rx_sk; \ + } \ +} while (0) + +#define call_trace_kfree_skb(skb, sk, ...) \ + _call_trace_kfree_skb(kfree, skb, sk, ## __VA_ARGS__) + +#define call_trace_consume_skb(skb, sk, ...) \ + _call_trace_kfree_skb(consume, skb, sk, ## __VA_ARGS__) + +void __fix_address kfree_skb_for_sk(struct sk_buff *skb, struct sock *rx_s= k, + enum skb_drop_reason reason); + +static inline void +kfree_skb_reason(struct sk_buff *skb, enum skb_drop_reason reason) +{ + kfree_skb_for_sk(skb, NULL, reason); +} =20 /** * kfree_skb - free an sk_buff with 'NOT_SPECIFIED' reason diff --git a/net/core/dev.c b/net/core/dev.c index 85fe8138f3e4..17516f26be92 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3135,15 +3135,6 @@ void __netif_schedule(struct Qdisc *q) } EXPORT_SYMBOL(__netif_schedule); =20 -struct dev_kfree_skb_cb { - enum skb_drop_reason reason; -}; - -static struct dev_kfree_skb_cb *get_kfree_skb_cb(const struct sk_buff *skb) -{ - return (struct dev_kfree_skb_cb *)skb->cb; -} - void netif_schedule_queue(struct netdev_queue *txq) { rcu_read_lock(); @@ -3182,7 +3173,11 @@ void dev_kfree_skb_irq_reason(struct sk_buff *skb, e= num skb_drop_reason reason) } else if (likely(!refcount_dec_and_test(&skb->users))) { return; } - get_kfree_skb_cb(skb)->reason =3D reason; + + /* There is no need to save the old cb since we are the only user. */ + KFREE_SKB_CB(skb)->reason =3D reason; + KFREE_SKB_CB(skb)->rx_sk =3D NULL; + local_irq_save(flags); skb->next =3D __this_cpu_read(softnet_data.completion_queue); __this_cpu_write(softnet_data.completion_queue, skb); @@ -5229,17 +5224,17 @@ static __latent_entropy void net_tx_action(struct s= oftirq_action *h) clist =3D clist->next; =20 WARN_ON(refcount_read(&skb->users)); - if (likely(get_kfree_skb_cb(skb)->reason =3D=3D SKB_CONSUMED)) + if (likely(KFREE_SKB_CB(skb)->reason =3D=3D SKB_CONSUMED)) trace_consume_skb(skb, net_tx_action); else trace_kfree_skb(skb, net_tx_action, - get_kfree_skb_cb(skb)->reason); + KFREE_SKB_CB(skb)->reason); =20 if (skb->fclone !=3D SKB_FCLONE_UNAVAILABLE) __kfree_skb(skb); else __napi_kfree_skb(skb, - get_kfree_skb_cb(skb)->reason); + KFREE_SKB_CB(skb)->reason); } } =20 diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 466999a7515e..5ce6996512a1 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1190,7 +1190,8 @@ void __kfree_skb(struct sk_buff *skb) EXPORT_SYMBOL(__kfree_skb); =20 static __always_inline -bool __kfree_skb_reason(struct sk_buff *skb, enum skb_drop_reason reason) +bool __kfree_skb_reason(struct sk_buff *skb, struct sock *rx_sk, + enum skb_drop_reason reason) { if (unlikely(!skb_unref(skb))) return false; @@ -1201,28 +1202,30 @@ bool __kfree_skb_reason(struct sk_buff *skb, enum s= kb_drop_reason reason) SKB_DROP_REASON_SUBSYS_NUM); =20 if (reason =3D=3D SKB_CONSUMED) - trace_consume_skb(skb, __builtin_return_address(0)); + call_trace_consume_skb(skb, rx_sk, __builtin_return_address(0)); else - trace_kfree_skb(skb, __builtin_return_address(0), reason); + call_trace_kfree_skb(skb, rx_sk, __builtin_return_address(0), reason); + return true; } =20 /** - * kfree_skb_reason - free an sk_buff with special reason + * kfree_skb_for_sk - free an sk_buff with special reason and receiving so= cket * @skb: buffer to free + * @rx_sk: the socket to receive the buffer, or NULL if not applicable * @reason: reason why this skb is dropped * * Drop a reference to the buffer and free it if the usage count has - * hit zero. Meanwhile, pass the drop reason to 'kfree_skb' + * hit zero. Meanwhile, pass the drop reason and rx socket to 'kfree_skb' * tracepoint. */ -void __fix_address -kfree_skb_reason(struct sk_buff *skb, enum skb_drop_reason reason) +void __fix_address kfree_skb_for_sk(struct sk_buff *skb, struct sock *rx_s= k, + enum skb_drop_reason reason) { - if (__kfree_skb_reason(skb, reason)) + if (__kfree_skb_reason(skb, rx_sk, reason)) __kfree_skb(skb); } -EXPORT_SYMBOL(kfree_skb_reason); +EXPORT_SYMBOL(kfree_skb_for_sk); =20 #define KFREE_SKB_BULK_SIZE 16 =20 @@ -1261,7 +1264,7 @@ kfree_skb_list_reason(struct sk_buff *segs, enum skb_= drop_reason reason) while (segs) { struct sk_buff *next =3D segs->next; =20 - if (__kfree_skb_reason(segs, reason)) { + if (__kfree_skb_reason(segs, NULL, reason)) { skb_poison_list(segs); kfree_skb_add_bulk(segs, &sa, reason); } @@ -1405,7 +1408,7 @@ void consume_skb(struct sk_buff *skb) if (!skb_unref(skb)) return; =20 - trace_consume_skb(skb, __builtin_return_address(0)); + call_trace_consume_skb(skb, NULL, __builtin_return_address(0)); __kfree_skb(skb); } EXPORT_SYMBOL(consume_skb); @@ -1420,7 +1423,7 @@ EXPORT_SYMBOL(consume_skb); */ void __consume_stateless_skb(struct sk_buff *skb) { - trace_consume_skb(skb, __builtin_return_address(0)); + call_trace_consume_skb(skb, NULL, __builtin_return_address(0)); skb_release_data(skb, SKB_CONSUMED); kfree_skbmem(skb); } @@ -1478,7 +1481,7 @@ void napi_consume_skb(struct sk_buff *skb, int budget) return; =20 /* if reaching here SKB is ready to free */ - trace_consume_skb(skb, __builtin_return_address(0)); + call_trace_consume_skb(skb, NULL, __builtin_return_address(0)); =20 /* if SKB is a clone, don't handle this case */ if (skb->fclone !=3D SKB_FCLONE_UNAVAILABLE) { --=20 2.30.2 From nobody Tue Dec 16 14:49:38 2025 Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8287B21A0D for ; Thu, 30 May 2024 21:47:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105623; cv=none; b=TjT3WMtjMr7XrfLOYEs9eT3AARhVFsdhFIOilsrHFKhXJACuXwozZ5xdY1S0cTUmog6bcJcCEBYXbE7A/RfSsNf9znndodfhSTOJfQT3lIrkgxpD4qiDbMcn7molI8LLkiKkJBFcIZkkd0p80GXxH2gwGgFm5jhiEXIf9VMhmFI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105623; c=relaxed/simple; bh=SUfnamc/6k/sjO/J1uJ3QJC2mTjrFfkQhfB+xutr5gk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=RTozPtVeBWrxGytjTP71l+IA4Zlm1MLiAI4EZ6EE0lH/6RUby+/6rzvlc3T81OtcLFNikWiMkSYJnIFauGhPGq0HrflcJWkRKdd1IKOf5sBVV8uoy7A72M4jcN8Ha4gWZZzDIGdeCFMOWQox5Pl7C2xlT/Mc/fkwE3YmaVadHhM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com; spf=pass smtp.mailfrom=cloudflare.com; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b=fe0U3Gwo; arc=none smtp.client-ip=209.85.222.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b="fe0U3Gwo" Received: by mail-qk1-f175.google.com with SMTP id af79cd13be357-794f4d9f0d2so7253285a.1 for ; Thu, 30 May 2024 14:47:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google09082023; t=1717105621; x=1717710421; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=MK2P6q1XiYjTWQIaOe4RIEfd3S5ujqhwLQADP0nXD8w=; b=fe0U3GwolInkcTr2/bNiARHo8zrLPyQktZfVQ4oJTP6EHWyxXfkXBW/xczlF2QM4db sqRI1kQgwXoXTcdckgZH3lY0sCtAIp9JDviuZXNt1S8pyBdPQNWaVwr0pGTW8njm4Q+K pBQWLhnIVA0eo4PDk6MruCFTfJnTXNmd3qWdhjNyRcuwWjBvscdrQY/ka9mV09DvJRQl SZrLNnYHMDeBNp8iawal4n/3dGPjNonPwAQSA8NQptd01WJpn7jzIBt7XouKL8Xmzs5L jTOOx7JIDT0xZX7Kt7/F2JBhwY2we58r98Fchhq3z+vmnxzC9BIOv0kawdf9vISswtHB /5FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717105621; x=1717710421; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=MK2P6q1XiYjTWQIaOe4RIEfd3S5ujqhwLQADP0nXD8w=; b=VWZnAjMXC1pOAMME4fH4Zeg5Kio6Zu1isfbyfsTQgUFWGiE6G8ulIxMTU3L5KgH2Mn 5tArWZEkn1v+o9FNepL6/XZkwQ5jFyn9apbgLr6ZSQB7mARmciROzKhvJYA5IEOvS0dC xhm7WDuak0lhK7DI+LYLuzF0U/rt9BrXhVnAfzc/tVqtT37y80ju9G2a9/HNl0Amn9vQ 5FJ7LcrWOiO4gVfu74kTe7NmUn7AUU3LbZQYqYzAo/fJ4CNNzCybsML9tEcEOWR6UONu YaRje8QkeCI/Ez0jBIgpRptE163ahVJX1qF64MwkNR0sZ5KoWQnX0iypClgEilPMKIIh dLMw== X-Forwarded-Encrypted: i=1; AJvYcCUjrVfOBYm9T7m+y8Mjg0G7UjD+hxo9BSvVFA7aei69uKuyMt9JUHqv9sPpSmP2TpB5JLwU7XrZ8qkbK0HLoOlx8Ymco2hYCrKf+AXU X-Gm-Message-State: AOJu0YzcQ8bw8JjQar52rqKaL9cOp/ic/cnnuzomobMCLkv1dYGDLTjS m5w/0oTMTzDJ0wLHPEzA7eXXEzlVatykqUvn5pdnyPNJl+6CUZwwdAkdPAIeDNA= X-Google-Smtp-Source: AGHT+IEm8CT3YJuc+qq9i8YbFNAZnmfEhM4lFa1VZEFA2/RthzAoH5D/o+zx+iB7B1JdGyD6bB3+PQ== X-Received: by 2002:a05:6214:5d11:b0:6ad:6209:ca76 with SMTP id 6a1803df08f44-6aecd56ee4bmr1597006d6.3.1717105621480; Thu, 30 May 2024 14:47:01 -0700 (PDT) Received: from debian.debian ([2a09:bac5:7a49:f9b::18e:1c]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6ae4b406622sm1887586d6.78.2024.05.30.14.46.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 14:47:00 -0700 (PDT) Date: Thu, 30 May 2024 14:46:59 -0700 From: Yan Zhai To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , Abhishek Chauhan , Mina Almasry , Florian Westphal , Alexander Lobakin , David Howells , Jiri Pirko , Daniel Borkmann , Sebastian Andrzej Siewior , Lorenzo Bianconi , Pavel Begunkov , linux-kernel@vger.kernel.org, kernel-team@cloudflare.com, Jesper Dangaard Brouer Subject: [RFC net-next 2/6] ping: pass rx socket on rcv drops Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use kfree_skb_for_sk call to pass on the rx socket Signed-off-by: Yan Zhai --- net/ipv4/ping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c index 823306487a82..e2f9866f67c7 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c @@ -946,7 +946,7 @@ static enum skb_drop_reason __ping_queue_rcv_skb(struct= sock *sk, pr_debug("ping_queue_rcv_skb(sk=3D%p,sk->num=3D%d,skb=3D%p)\n", inet_sk(sk), inet_sk(sk)->inet_num, skb); if (sock_queue_rcv_skb_reason(sk, skb, &reason) < 0) { - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); pr_debug("ping_queue_rcv_skb -> failed\n"); return reason; } --=20 2.30.2 From nobody Tue Dec 16 14:49:38 2025 Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B9661862B0 for ; Thu, 30 May 2024 21:47:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105627; cv=none; b=jUrIrWHFtaLkLjRH0RJZBM0IJ54INYrnXNGXpsROcu40ESsb0GDibNwuGjJ7hDxZdVQqGA4nKcrVf9G0pd/npId0ruSM1iQ+QxSEDet5vwLWoEL+H0Ez2UXPnHuO24AkKeFs5+dYiN0BlXBmSxTIT1U6LBoLIFCYAAqaCUhsVfs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105627; c=relaxed/simple; bh=y3+eQROhctQnk3LEiLSPrdQt64pO69knN7si0Z3L3mU=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=WfXL0QetNSmXy1oYuLPUXifMwrb3gS/sS7nBcXyZKRrSc/uzJt/u/aQ8ZIR/6EdkXDDxa6KNLizTGHO+/o/rKXRIaBmXPpzMCVqdVHVpUu0MBs5VnapF1Ljcv8tsJnHNsdyMiKe5Qghj3BuCS2BSZhWq4e9yZYxXMh7tzjvCgNI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com; spf=pass smtp.mailfrom=cloudflare.com; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b=JvyjSpIa; arc=none smtp.client-ip=209.85.222.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b="JvyjSpIa" Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-794cbdca425so100344585a.0 for ; Thu, 30 May 2024 14:47:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google09082023; t=1717105624; x=1717710424; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=SRNW+MUSsgkJBT+7REaMI9265axxAr+6yEAep7NXTwE=; b=JvyjSpIa/ikelX5qwDU8A4rGizYHJh5lFSz/5IHIjsTF7ozc1Uadns0qlV6s2G3KSv CY2BLKQVGquwKRuUwdgOAtPWk7DvOl82WLwOB/f65Q9dWgwLnf8MrqhD5QJWaqXrEkcu IgnRSroauLWV8KuEBTYEbkrSqdff9F5chJCe0PlR5haCJaDJntNbo5Jso4HHLvpFCmKT yg+KjpGPE8/SgeTKW+PZsgZ5oaydi1+PZglWmKpFC/N1/L+Ly0C1nCJC1gGiOYCwADaD MCPG/f2wmDYcz2mfiKnQNA1t8N+9YE1VkYpQ/9I+WFZyW2cV9naCiKhRUpefLZ4bQPhJ ml8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717105624; x=1717710424; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=SRNW+MUSsgkJBT+7REaMI9265axxAr+6yEAep7NXTwE=; b=HYGcV1jhIeFnQUan1YwLjLvXhYrYhG+TNSjJj49/ycAFmjgEYC3tZeo/0dpgwpKe8h +IkqjR/gF3Ftyhx4NAWfCErJiaWnJnYlPKhWqUtO0doWQTMStwkOxgNxeOL799lY3APz qFqp2KHuv/dq7+8q4HfI0p9F6elAxGVP6D3kAEA9SFau3WW5fD1vMHxbgz8HSj+OwdR7 Yrgs0De8FraF3JVErcjTBwqsD/8hw4MANOBM5nWJlKTu0tetHkt0WbXbjWNs1dcjMnG2 M/mgzoWnRlJjED+o6GQ0JkbojfASQeMV1ugGjBwnKgJpzULGt8V+dhQ/qcw4s2OsSjPK Uh0A== X-Forwarded-Encrypted: i=1; AJvYcCU6AfImIOE2Bpdpj9w4TyvbV56tcRKN+/ae1sKkrTAgivkJhk+3OtHYRi87O3nQ6wZcrneniU6UfhPSF6qxU0ZVhkhzgUVbmrKF+21/ X-Gm-Message-State: AOJu0YytqmdSJ/q7ruEF4sPD6IDkK3LdPKRTBw0CO96TRprhFhbO+VpE tBmsRAI0B6Yph2LblEvJ/egrVHPQMgJVNuAs6ucYFDoCepYuHg/CWem+PFZJXlc= X-Google-Smtp-Source: AGHT+IEzs95+FCSCrSeu5I6ebwijeLwG58rCifGbKQk6mzGpuAgio+YB1VxEby878mMBqMulFOPD7w== X-Received: by 2002:a05:620a:6126:b0:792:bfb8:848b with SMTP id af79cd13be357-794e9daaaf8mr406252585a.27.1717105624315; Thu, 30 May 2024 14:47:04 -0700 (PDT) Received: from debian.debian ([2a09:bac5:7a49:f9b::18e:1c]) by smtp.gmail.com with ESMTPSA id af79cd13be357-794f306332bsm14237385a.76.2024.05.30.14.47.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 14:47:03 -0700 (PDT) Date: Thu, 30 May 2024 14:47:01 -0700 From: Yan Zhai To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , Abhishek Chauhan , Mina Almasry , Florian Westphal , Alexander Lobakin , David Howells , Jiri Pirko , Daniel Borkmann , Sebastian Andrzej Siewior , Lorenzo Bianconi , Pavel Begunkov , linux-kernel@vger.kernel.org, kernel-team@cloudflare.com, Jesper Dangaard Brouer Subject: [RFC net-next 3/6] net: raw: pass rx socket on rcv drops Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use kfree_skb_for_sk call to pass on the rx socket Signed-off-by: Yan Zhai --- net/ipv4/raw.c | 4 ++-- net/ipv6/raw.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 1a0953650356..429498420eb3 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -301,7 +301,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff = *skb) =20 ipv4_pktinfo_prepare(sk, skb, true); if (sock_queue_rcv_skb_reason(sk, skb, &reason) < 0) { - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); return NET_RX_DROP; } =20 @@ -312,7 +312,7 @@ int raw_rcv(struct sock *sk, struct sk_buff *skb) { if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) { atomic_inc(&sk->sk_drops); - kfree_skb_reason(skb, SKB_DROP_REASON_XFRM_POLICY); + kfree_skb_for_sk(skb, sk, SKB_DROP_REASON_XFRM_POLICY); return NET_RX_DROP; } nf_reset_ct(skb); diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index f838366e8256..c927075f013f 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -362,14 +362,14 @@ static inline int rawv6_rcv_skb(struct sock *sk, stru= ct sk_buff *skb) if ((raw6_sk(sk)->checksum || rcu_access_pointer(sk->sk_filter)) && skb_checksum_complete(skb)) { atomic_inc(&sk->sk_drops); - kfree_skb_reason(skb, SKB_DROP_REASON_SKB_CSUM); + kfree_skb_for_sk(skb, sk, SKB_DROP_REASON_SKB_CSUM); return NET_RX_DROP; } =20 /* Charge it to the socket. */ skb_dst_drop(skb); if (sock_queue_rcv_skb_reason(sk, skb, &reason) < 0) { - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); return NET_RX_DROP; } =20 @@ -390,7 +390,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb) =20 if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) { atomic_inc(&sk->sk_drops); - kfree_skb_reason(skb, SKB_DROP_REASON_XFRM_POLICY); + kfree_skb_for_sk(skb, sk, SKB_DROP_REASON_XFRM_POLICY); return NET_RX_DROP; } nf_reset_ct(skb); @@ -415,7 +415,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb) if (inet_test_bit(HDRINCL, sk)) { if (skb_checksum_complete(skb)) { atomic_inc(&sk->sk_drops); - kfree_skb_reason(skb, SKB_DROP_REASON_SKB_CSUM); + kfree_skb_for_sk(skb, sk, SKB_DROP_REASON_SKB_CSUM); return NET_RX_DROP; } } --=20 2.30.2 From nobody Tue Dec 16 14:49:38 2025 Received: from mail-oi1-f170.google.com (mail-oi1-f170.google.com [209.85.167.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5C5CB18733D for ; Thu, 30 May 2024 21:47:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105629; cv=none; b=SBon1W8SPgVixYB2Ha/95awrB5o0tp4AtBBYRAj31lfCjM8lQ7gbOQLSvYmWtkmMewXH2w5U32HxG2sEkBPqWmJXYworiLdc5mpx1AuhtWdoiE8m5Rxa5dGAnyQUVfUL6sfi4sLMHHFSqUtLRqD2Vs0WSAissBMA2/zfkCHG4nU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105629; c=relaxed/simple; bh=vPCt4wAtO1HnG/ewxxcEuNhbOK4WI09M32LaeYKYdac=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=UeR+8wMNS+98KNyzStXJR/QxopijFMYZH1S/BZTFNXRq6o/2CLHQRL5MDmeN13HY3jZCw2Ub+OcnRzIwp3gqkWehCR5n0pUbLhf1vfqB8cggy6l69OmNak2Q2kTQmb2mobYDdaqgZsL9PU3f8T9RPjDPgMJxOsHr9aPw6uwz01c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com; spf=pass smtp.mailfrom=cloudflare.com; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b=B+TVWrV7; arc=none smtp.client-ip=209.85.167.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b="B+TVWrV7" Received: by mail-oi1-f170.google.com with SMTP id 5614622812f47-3d1bb1c3b74so824452b6e.2 for ; Thu, 30 May 2024 14:47:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google09082023; t=1717105627; x=1717710427; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=EgOT6ysidbDZUdOMVUdTAX9+IvxmNFHfY7koismnltE=; b=B+TVWrV7DoBOVh0/pNl43jXb/mu8Zl4ACR1cwegfBEWhI9OMROjQgxCKQIgsfHZHlm JX+4brnMEOml97/OJcDlSmdwkV+iVgVyXRyy6E2Zt3ow/5n1DUc990JygAUc0wa8LmK4 1YWwoZEQ36ZEncyVo7z3Uq/8BKN8x+rRD699+mJdw3+Nme4/oj1FgQmcMAYCv9ifrj/e tOJtEkDf2bXM39Qy6XvfRcopxFqJeBo/xzt7EH47el0MMLTJKxdReR6ldPy9e7OTUwgQ /Nl4/muW7oTwAvHkReuSPCUfaGvSyVm22gxMA2Np+Ue0XpXBb/9m3EKfAE9ik+1JaFFy T5lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717105627; x=1717710427; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=EgOT6ysidbDZUdOMVUdTAX9+IvxmNFHfY7koismnltE=; b=KeysiP5ZsQB1Q08KfFf7/Unil/5FGwip6IjnG9YzCt9fadxZKjHy8NeFnUVAW5LGF7 NSt728j6s0eYee1ORyeaWyQqqimTjrOO5OUMv3lOgMcO4kZepHLm3uuho07XlnoVK2BT Txeq7mYMryHxjzKOb9vpaMrUcaxNz+i8uiMnYfZEAO40bjQDOGUKiAy0V4fo3p9rGR/n +1rUmpUcnoGgseJxDo9Rxu8eJxizWuxhGvgI9SsEYH+Wh7WoeN2Vrlgl5ue+a/otd8Xh n1WUCgpGesiWjo8NZoJusP3rXELTxrn94SurRP5TBP0YOKggmENwMuz0k2503hGLVJOF afmg== X-Forwarded-Encrypted: i=1; AJvYcCWrl5fvAiPb49YqXgne5L7ApV8wjZDWdVt6Bz9rAqvEOf9xJRJ2syVDwT5zV1yQDWOJiCX5w6f9SUCYr/Zx+a5wGpsV/Ow+9mZfjxuL X-Gm-Message-State: AOJu0YznGxHvivFsep8RGkaIy2j1t3hPuswnl/EJQt/GgaTIspVIcocT ewJksXPK/F8MK9DA4qycYo7XqcDo+ye2QFrf5HF3gXYkf7/dqvfNLR2r6L9MkRs= X-Google-Smtp-Source: AGHT+IEYtelnJyVi+cGFfRgSrc10AA9izjzGiI3lDu+ulwo+lb8cwJNtiaOv8DUtTMKtfa7cDYp9xg== X-Received: by 2002:a05:6808:11d0:b0:3c9:708d:ca69 with SMTP id 5614622812f47-3d1e35cd6efmr10513b6e.56.1717105627129; Thu, 30 May 2024 14:47:07 -0700 (PDT) Received: from debian.debian ([2a09:bac5:7a49:f9b::18e:1c]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6ae4a746691sm1919416d6.38.2024.05.30.14.47.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 14:47:06 -0700 (PDT) Date: Thu, 30 May 2024 14:47:04 -0700 From: Yan Zhai To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , Abhishek Chauhan , Mina Almasry , Florian Westphal , Alexander Lobakin , David Howells , Jiri Pirko , Daniel Borkmann , Sebastian Andrzej Siewior , Lorenzo Bianconi , Pavel Begunkov , linux-kernel@vger.kernel.org, kernel-team@cloudflare.com, Jesper Dangaard Brouer Subject: [RFC net-next 4/6] tcp: pass rx socket on rcv drops Message-ID: <48392b4d422dd64cb8e76822737928c189b2b4d2.1717105215.git.yan@cloudflare.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use kfree_skb_for_sk call to pass on the rx socket Signed-off-by: Yan Zhai --- net/ipv4/syncookies.c | 2 +- net/ipv4/tcp_input.c | 2 +- net/ipv4/tcp_ipv4.c | 4 ++-- net/ipv6/syncookies.c | 2 +- net/ipv6/tcp_ipv6.c | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c index b61d36810fe3..fd0ccf0a0439 100644 --- a/net/ipv4/syncookies.c +++ b/net/ipv4/syncookies.c @@ -496,6 +496,6 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk= _buff *skb) out_free: reqsk_free(req); out_drop: - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); return NULL; } diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 9c04a9c8be9d..6c5f6fe7d9fa 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -4849,7 +4849,7 @@ static void tcp_drop_reason(struct sock *sk, struct s= k_buff *skb, enum skb_drop_reason reason) { sk_drops_add(sk, skb); - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); } =20 /* This one checks to see if we can put data from the diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 8f70b8d1d1e5..cff9e0c7daec 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -1944,7 +1944,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *sk= b) reset: tcp_v4_send_reset(rsk, skb, sk_rst_convert_drop_reason(reason)); discard: - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); /* Be careful here. If this function gets more complicated and * gcc suffers from register pressure on the x86, sk (in %ebx) * might be destroyed here. This current version compiles correctly, @@ -2381,7 +2381,7 @@ int tcp_v4_rcv(struct sk_buff *skb) discard_it: SKB_DR_OR(drop_reason, NOT_SPECIFIED); /* Discard frame. */ - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return 0; =20 discard_and_relse: diff --git a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c index bfad1e89b6a6..d09fec4bb0c0 100644 --- a/net/ipv6/syncookies.c +++ b/net/ipv6/syncookies.c @@ -275,6 +275,6 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk= _buff *skb) out_free: reqsk_free(req); out_drop: - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); return NULL; } diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 750aa681779c..c7a7f339ca74 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -1682,7 +1682,7 @@ int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *sk= b) discard: if (opt_skb) __kfree_skb(opt_skb); - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); return 0; csum_err: reason =3D SKB_DROP_REASON_TCP_CSUM; @@ -1948,7 +1948,7 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff= *skb) =20 discard_it: SKB_DR_OR(drop_reason, NOT_SPECIFIED); - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return 0; =20 discard_and_relse: --=20 2.30.2 From nobody Tue Dec 16 14:49:38 2025 Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D26C1190674 for ; Thu, 30 May 2024 21:47:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105632; cv=none; b=CAeY65eFUAVkKkXJhXC4aft0jK6Cpo7s6JAnhywZLuIM/ILW3wiN3LxXr4rFXAC/KQbBNQ79gTo4fs5FufaiMALFieqe8cL0E2oVx7YmSWfwX0vzRacVtx65JYbucPwPxfqkAl4G4/jUEFQKmYVJnZSJbfaiv+TvaojOrYKziew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105632; c=relaxed/simple; bh=6dowC/Uwf26NiZaIg168nDsdSN0aKz+6tZkvOLAwGnQ=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=XwIGmfA+6nQxsECJK+JnYVjdSxwUe+O3ICLrMmDV36J9xuerrJAJ+lKxF/MIHe7ak3OYqg9X5qSeWajXAeQFZPKKrLnPwqMWxIwLKV8NIBZWlAo9K4XPmK95rPM8zMNp4gwnTJt3WYuf/AOq7IiE+L5G/h8P7XTFrGyy35xEMZg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com; spf=pass smtp.mailfrom=cloudflare.com; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b=KFMlbyfE; arc=none smtp.client-ip=209.85.210.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b="KFMlbyfE" Received: by mail-ot1-f45.google.com with SMTP id 46e09a7af769-6f12eda7c7fso724956a34.2 for ; Thu, 30 May 2024 14:47:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google09082023; t=1717105630; x=1717710430; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=27TjARiWthXWjefcQW0222UB7xMw3bcD7v/H3qDKiuE=; b=KFMlbyfELd+IMDBFEv5TVqpkYAIFrnadoOkHZntt+LWWH5Lyvbt/DCUuIzSgcEJyw1 jThW9oHKYeY+NY4aOwCCj9kYiDcpRCLRQOR3w4wV7rq8auNss+wFYeHVovWx9wWPbDub LW5C8L8KXNXc8KXUmI8a/rQMFRQ+YvkhMD+DfJr+ezRo9xkkYGs6V7wy+DOapKKeFHAJ fQ4IvRgfrNgqTzSOmi+j/oy0AddmU7pH3ja8xlu0soA40jA9MzxdOz8GFxoLLP2Mc88I jDuPxmj5VH1Pf/JETPXZ62xAmTMkYRzi2UNFSrI7V1mMYdhMSjuMdWN7ZEppnUlupffu Jq3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717105630; x=1717710430; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=27TjARiWthXWjefcQW0222UB7xMw3bcD7v/H3qDKiuE=; b=mK2j92KFoAvxCfKam6OA4xvKj/GdedevtL5Inuwj1R0GC7Pfv5WY6pYonQMTwYa0zm P//0tWL01/HDfjLCiAd0DvSaA6ZQ4Epanz2Mgs+gkfFO1RMuMxIyryanVIKI54rAFIZZ 062ecFNF+wFrKW4kI2IhWE7aVdhFr9djddtmrucVdFjNWSLSWbpjyuSwXSopcuRFAcqG uNBcia5Cw8T6fawkcIM2pD6KVrDQTmNlN+UYPvyjLpe1g2ZqYncs3EOgZx/scT23ZQSf o+CqjtT/KoPuyNVly9oVLeicwjyL4JPldy4D7JCK5myDH0+JylWmOAxEiKUS1Be5vlHS 0inQ== X-Forwarded-Encrypted: i=1; AJvYcCUrPK54eZ3gWFAbMeeuyWHpi+xGVVrFpDlRdnWN4IddClt4iOht5EW/wXML1mDoecsgIiQxpgvGBOx3pEsmzFA0VmoCnmp8kKZdAWha X-Gm-Message-State: AOJu0YyQyzAhN2enhLjVRB/1iCSvz8fJS1Xong/d6VWJ5eMXlbwzb29T Yc/jyzpLvflvF1tMxA6pOkiMMQjygpUMXzZYgnNl4d06gvQBLQLBW5WU45b4PqM= X-Google-Smtp-Source: AGHT+IHZeVl7ouGz/puxd9+5HcfYhWbufP8hbtU6k28G151wktaPRdVbkT1nW53EUrW/uRp7+N61ew== X-Received: by 2002:a05:6830:1e15:b0:6ef:9ec1:2bf8 with SMTP id 46e09a7af769-6f911f9fc2bmr93153a34.23.1717105629904; Thu, 30 May 2024 14:47:09 -0700 (PDT) Received: from debian.debian ([2a09:bac5:7a49:f9b::18e:1c]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-43ff23a42bcsm2009991cf.16.2024.05.30.14.47.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 14:47:09 -0700 (PDT) Date: Thu, 30 May 2024 14:47:07 -0700 From: Yan Zhai To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , Abhishek Chauhan , Mina Almasry , Florian Westphal , Alexander Lobakin , David Howells , Jiri Pirko , Daniel Borkmann , Sebastian Andrzej Siewior , Lorenzo Bianconi , Pavel Begunkov , linux-kernel@vger.kernel.org, kernel-team@cloudflare.com, Jesper Dangaard Brouer Subject: [RFC net-next 5/6] udp: pass rx socket on rcv drops Message-ID: <64c8339aa96232b5d36738162e7bf58412bf6682.1717105215.git.yan@cloudflare.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use kfree_skb_for_sk call to pass on the rx socket Signed-off-by: Yan Zhai --- net/ipv4/udp.c | 6 +++--- net/ipv6/udp.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 189c9113fe9a..e5dbd1cbad50 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -2074,7 +2074,7 @@ static int __udp_queue_rcv_skb(struct sock *sk, struc= t sk_buff *skb) } UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite); trace_udp_fail_queue_rcv_skb(rc, sk, skb); - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return -1; } =20 @@ -2196,7 +2196,7 @@ static int udp_queue_rcv_one_skb(struct sock *sk, str= uct sk_buff *skb) drop: __UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite); atomic_inc(&sk->sk_drops); - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return -1; } =20 @@ -2485,7 +2485,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_ta= ble *udptable, __UDP_INC_STATS(net, UDP_MIB_CSUMERRORS, proto =3D=3D IPPROTO_UDPLITE); drop: __UDP_INC_STATS(net, UDP_MIB_INERRORS, proto =3D=3D IPPROTO_UDPLITE); - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return 0; } =20 diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index c81a07ac0463..97a327c759b8 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -673,7 +673,7 @@ static int __udpv6_queue_rcv_skb(struct sock *sk, struc= t sk_buff *skb) } UDP6_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite); trace_udp_fail_queue_rcv_skb(rc, sk, skb); - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return -1; } =20 @@ -776,7 +776,7 @@ static int udpv6_queue_rcv_one_skb(struct sock *sk, str= uct sk_buff *skb) drop: __UDP6_INC_STATS(sock_net(sk), UDP_MIB_INERRORS, is_udplite); atomic_inc(&sk->sk_drops); - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return -1; } =20 @@ -1054,7 +1054,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_ta= ble *udptable, __UDP6_INC_STATS(net, UDP_MIB_CSUMERRORS, proto =3D=3D IPPROTO_UDPLITE); discard: __UDP6_INC_STATS(net, UDP_MIB_INERRORS, proto =3D=3D IPPROTO_UDPLITE); - kfree_skb_reason(skb, reason); + kfree_skb_for_sk(skb, sk, reason); return 0; } =20 --=20 2.30.2 From nobody Tue Dec 16 14:49:38 2025 Received: from mail-qv1-f46.google.com (mail-qv1-f46.google.com [209.85.219.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D83F0194C77 for ; Thu, 30 May 2024 21:47:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105635; cv=none; b=DWp8sUFaOAtw0wfh5sfjKP2/HU7YoM/+tOsGAHnS3vjH2cOwM0Mw9fY3T8W39Wg8U3iB8Fdl4Blx1d9Edsc4vuztTtSoi+mKyGQ0y6vQLwPtOm/dxGYwuMPcYiShRznKKOvNdps/UBlnLddxHuASwPoobLUoJ2iCrkd+ChRUiS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717105635; c=relaxed/simple; bh=zBPfgKOCZ7FGTb7LtwnzoLHAcib59MLufF+CqN5TSP0=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=aqdm89SEroGFKYu+tiq0wbDrNcMhuY0yBKyxPyp+ryKSheA6DTYK4Y2+vQwcpafwxitp8ci4wv22i2b/IU6xtwqMfM7N8+sbGElylRlYU2xtFsHpMl2O92TKqK0EFKnJoyYO1oSQfRjSIGjUrOYQxldRzHdt+zle+YMbTVbFGyc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com; spf=pass smtp.mailfrom=cloudflare.com; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b=RIqk3s5l; arc=none smtp.client-ip=209.85.219.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cloudflare.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cloudflare.com header.i=@cloudflare.com header.b="RIqk3s5l" Received: by mail-qv1-f46.google.com with SMTP id 6a1803df08f44-6ae0adfba9cso7771576d6.2 for ; Thu, 30 May 2024 14:47:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google09082023; t=1717105633; x=1717710433; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=hK/RV3ZAvRKcX5XY/+KVfGOngLsfuJvHovUEHHeWptM=; b=RIqk3s5lhEwhRYw2FJe+5RyMoRbsOM8vHvqrYMHGPlB89vYoQ/PqZ7HbJZtaDYZUWa C4JTfmtEFVTY6rSLh1NYvVTpzyhPWLBgdF66rNKCmdn9ac90gzM3GvhWEYUwj4HVfVoW NK97NcO/BRerw9aXN0sm1A/l2CIHmsIWZ1O6zkzt9XrDCpxVatMWZMqVnIXbG+Tk5KBm opLgza+MZ9UTbMGVwxGJCPLu7jpqvYlrA4mDcBrBRHmJgg+5g56VQ177iT5/x5L9tmij o4mNTmuUpveL82Ywmx556WyuJV6C3HpY7Z61XYmiXJhENLJLWnOssgh+KUNMe77nPjO3 p3lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717105633; x=1717710433; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hK/RV3ZAvRKcX5XY/+KVfGOngLsfuJvHovUEHHeWptM=; b=eI6YPmFkfrAvj/OWze7zFw8PLtwKql8lrpTTizzu3q45Fefn/RO/yzkM+x6qdRf1RQ nt17UgrfhuN7NcDWjDzrMCGkUSpoolrTbdJ7LZ8ZwZU2lIJ04abFKELDZSoKAymczfwT qx2wtsiZaAWZBtUIkPfsRAucTl3OFm5GkWkuqJuZng2VX3qc4SSw4N9S14ol+RQU3Bf+ DZ6qF8z4UYsB/lGedHjYjNzSBKHYmRZNHVDj41ZIxXwy9Ptj3N1+iSSnZ5eIDOZhFrEm lbs3X2WjCZ59oRFF2gBHmfukwVZ5xeoH2Ow6mn69Id5eFaBBkctcmg4JdpUn5rDEsIBa 0QYw== X-Forwarded-Encrypted: i=1; AJvYcCUf/kvqfT1BPB6I88mqFrbvmhPmGL0IjgmnMYX5vz2JtY+nCZyhLlX9KVbvwO7/dQhvtZSOuW+52/JTLKyWHgPcO+4cOqgnXsKuUquP X-Gm-Message-State: AOJu0Yw9pdki7h7puDPmmMOSJprPA+vHFKvSmxEOcaBMxy7yAB9Lx6RW +KzYBSAlOfnv80e35dO46f7MIXGYJHSUFXgGnKKXo7NIdsAT3l2fERJDFyCY2Sw= X-Google-Smtp-Source: AGHT+IHbqI93EibzSyAta5LKCbpan2p512WiBaSen+5LGFNq3txKFmbJqCRt3fWHnZRqPqSQpd153A== X-Received: by 2002:a05:6214:33ca:b0:6ae:19e2:39d3 with SMTP id 6a1803df08f44-6aecd6ef732mr1410496d6.45.1717105632747; Thu, 30 May 2024 14:47:12 -0700 (PDT) Received: from debian.debian ([2a09:bac5:7a49:f9b::18e:1c]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6ae4b4064d2sm1877406d6.91.2024.05.30.14.47.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 14:47:11 -0700 (PDT) Date: Thu, 30 May 2024 14:47:10 -0700 From: Yan Zhai To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , David Ahern , Abhishek Chauhan , Mina Almasry , Florian Westphal , Alexander Lobakin , David Howells , Jiri Pirko , Daniel Borkmann , Sebastian Andrzej Siewior , Lorenzo Bianconi , Pavel Begunkov , linux-kernel@vger.kernel.org, kernel-team@cloudflare.com, Jesper Dangaard Brouer Subject: [RFC net-next 6/6] af_packet: pass rx socket on rcv drops Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use kfree_skb_for_sk call to pass on the rx socket Signed-off-by: Yan Zhai --- net/packet/af_packet.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index fce390887591..30a6447b4fc4 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2226,7 +2226,7 @@ static int packet_rcv(struct sk_buff *skb, struct net= _device *dev, skb->len =3D skb_len; } drop: - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return 0; } =20 @@ -2494,7 +2494,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct ne= t_device *dev, skb->len =3D skb_len; } drop: - kfree_skb_reason(skb, drop_reason); + kfree_skb_for_sk(skb, sk, drop_reason); return 0; =20 drop_n_account: @@ -2503,7 +2503,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct ne= t_device *dev, drop_reason =3D SKB_DROP_REASON_PACKET_SOCK_ERROR; =20 sk->sk_data_ready(sk); - kfree_skb_reason(copy_skb, drop_reason); + kfree_skb_for_sk(copy_skb, sk, drop_reason); goto drop_n_restore; } =20 --=20 2.30.2