All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steffen Klassert <steffen.klassert@secunet.com>
To: "Xiang Mei (Microsoft)" <xmei5@asu.edu>
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S . Miller" <davem@davemloft.net>,
	<netdev@vger.kernel.org>, Simon Horman <horms@kernel.org>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	<AutonomousCodeSecurity@microsoft.com>,
	<tgopinath@linux.microsoft.com>, <kys@microsoft.com>
Subject: Re: [PATCH ipsec] xfrm6: clear dst.dev on error to avoid double netdev_put in xfrm6_fill_dst()
Date: Tue, 7 Jul 2026 08:34:21 +0200	[thread overview]
Message-ID: <akyd7YVSczkMzK-h@secunet.com> (raw)
In-Reply-To: <20260702010516.221830-1-xmei5@asu.edu>

On Thu, Jul 02, 2026 at 01:05:16AM +0000, Xiang Mei (Microsoft) wrote:
> On the error path where in6_dev_get(dev) returns NULL, xfrm6_fill_dst()
> releases the device reference with netdev_put() but leaves
> xdst->u.dst.dev set. dst_destroy() later calls netdev_put(dst->dev)
> again, so the same net_device reference is released twice, underflowing
> its refcount (ref_tracker WARNING + "unregister_netdevice: waiting for
> <dev> to become free").
> 
> Clear xdst->u.dst.dev after the netdev_put(), the same way the XFRM
> device-offload paths xfrm_dev_state_add() and xfrm_dev_policy_add() in
> net/xfrm/xfrm_device.c NULL ->dev when releasing the reference on error.
> 
>   ref_tracker: reference already released.
>   ref_tracker: allocated in:
>    xfrm6_fill_dst (net/ipv6/xfrm6_policy.c:86)
>    ...
>    udpv6_sendmsg (net/ipv6/udp.c:1696)
>    ...
>   ref_tracker: freed in:
>    xfrm6_fill_dst (net/ipv6/xfrm6_policy.c:90)
>    ...
>   WARNING: lib/ref_tracker.c:322 at ref_tracker_free+0x58b/0x780
>    dst_destroy (net/core/dst.c:115)
>    rcu_core
>    handle_softirqs
>    ...
> 
> Fixes: 84c4a9dfbf43 ("xfrm6: release dev before returning error")
> Reported-by: AutonomousCodeSecurity@microsoft.com
> Signed-off-by: Xiang Mei (Microsoft) <xmei5@asu.edu>

Applied, thanks a lot!

  reply	other threads:[~2026-07-07  6:34 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-02  1:05 [PATCH ipsec] xfrm6: clear dst.dev on error to avoid double netdev_put in xfrm6_fill_dst() Xiang Mei (Microsoft)
2026-07-07  6:34 ` Steffen Klassert [this message]
2026-07-07 18:18   ` Xiang Mei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=akyd7YVSczkMzK-h@secunet.com \
    --to=steffen.klassert@secunet.com \
    --cc=AutonomousCodeSecurity@microsoft.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=kys@microsoft.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=tgopinath@linux.microsoft.com \
    --cc=xmei5@asu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.