Re: [PATCH net-next 1/7] net: Add skb_dst_reset and skb_dst_restore
From: Jakub Kicinski <kuba@kernel.org>
Date: 2025-08-14 00:57:41
Also in:
linux-staging, lkml, netfilter-devel
From: Jakub Kicinski <kuba@kernel.org>
Date: 2025-08-14 00:57:41
Also in:
linux-staging, lkml, netfilter-devel
On Tue, 12 Aug 2025 08:52:39 -0700 Stanislav Fomichev wrote:
+/** + * skb_dst_reset() - return current dst_entry value and clear it + * @skb: buffer + * + * Resets skb dst_entry without adjusting its reference count. Useful in + * cases where dst_entry needs to be temporarily reset and restored. + * Note that the returned value cannot be used directly because it + * might contain SKB_DST_NOREF bit. + * + * When in doubt, prefer skb_dst_drop() over skb_dst_reset() to correctly + * handle dst_entry reference counting.
thoughts on prefixing these two new helpers with __ to hint that they are low level and best avoided?
+ *
+ * Returns: original skb dst_entry.
+ */
+static inline unsigned long skb_dst_reset(struct sk_buff *skb)
+{
+ unsigned long refdst = skb->_skb_refdst;
+
+ skb->_skb_refdst = 0;
+ return refdst;
+}
+
+/**
+ * skb_dst_restore() - restore skb dst_entry saved via skb_dst_resetsaved -> removed ? Also I think for better kdoc linking it's good to add () after function names
+ * @skb: buffer
kdoc missing for refdst
+ */
+static inline void skb_dst_restore(struct sk_buff *skb, unsigned long refdst)
+{
+ skb->_skb_refdst = refdst;