From: David Ahern <dsahern@kernel.org>
To: Hangbin Liu <hangbin.liu@linux.dev>, Antoine Tenart <atenart@kernel.org>
Cc: Zhou Qiuyue <n0ps1edzz@gmail.com>,
netdev@vger.kernel.org, Ido Schimmel <idosch@nvidia.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@kernel.org>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH net v2] ipv6: raw: fix use-after-free in rawv6_send_hdrinc()
Date: Wed, 28 Oct 2026 08:37:20 -0600 [thread overview]
Message-ID: <15556a7f-c9e4-4ada-9810-9bf64d67164a@kernel.org> (raw)
In-Reply-To: <auFPlcB4VfQ76NYC@fedora>
On 10/27/26 7:27 PM, Hangbin Liu wrote:
> On Tue, Oct 27, 2026 at 10:43:48AM +0100, Antoine Tenart wrote:
>> On Tue, Oct 27, 2026 at 09:38:34AM +0800, Hangbin Liu wrote:
>>> On Mon, Oct 26, 2026 at 04:07:40PM +0100, Antoine Tenart wrote:
>>>> On Mon, Oct 26, 2026 at 02:09:23PM +0800, Hangbin Liu wrote:
>>>>> On Mon, Oct 26, 2026 at 12:48:08PM +0800, Zhou Qiuyue wrote:
>>>>>> diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
>>>>>> index b965258cf..bdea82543 100644
>>>>>> --- a/net/ipv6/raw.c
>>>>>> +++ b/net/ipv6/raw.c
>>>>>> @@ -654,6 +654,9 @@ static int rawv6_send_hdrinc(struct sock *sk, struct msghdr *msg, int length,
>>>>>> if (unlikely(!skb))
>>>>>> return 0;
>>>>>>
>>>>>> + /* l3mdev_ip6_out() may have replaced the skb dst. */
>>>>>> + rt = dst_rt6_info(skb_dst(skb));
>>>>>> +
>>>>>> /* Acquire rcu_read_lock() in case we need to use rt->rt6i_idev
>>>>>> * in the error path. Since skb has been freed, the dst could
>>>>>> * have been queued for deletion.
>>>>>
>>>>> Reviewed-by: Hangbin Liu <liuhangbin@kylinos.cn>
>>>>
>>>> Doesn't this change the device seen by the nf hook / used for the stats?
>>>
>>> Should we still use the old/released rt->dst.dev after the VRF output
>>> path replace skb->dst? vrf_ip6_out_redirect() said it allows the nf hook
>>> use vrf device.
>>
>> Right, but then in the direct path the NF_INET_LOCAL_OUT hook would be
>> run twice with the same dev. Looking at other call sites for
>> l3mdev_ip6_out, it's not clear either, __ip6_local_out reloads the dev
>> while ip6_xmit does not. I'm not sure what is the expected behavior.
>
> Hmm, me neither. David might know.
>
I do not recall the original behavior; that was many years ago.
next prev parent reply other threads:[~2026-10-28 14:37 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-26 4:48 [PATCH net v2] ipv6: raw: fix use-after-free in rawv6_send_hdrinc() Zhou Qiuyue
2026-10-26 6:09 ` Hangbin Liu
2026-10-26 15:07 ` Antoine Tenart
2026-10-27 1:38 ` Hangbin Liu
2026-10-27 9:43 ` Antoine Tenart
2026-10-28 1:27 ` Hangbin Liu
2026-10-28 14:37 ` David Ahern [this message]
2026-10-28 7:50 ` netdev-bot+sashiko
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=15556a7f-c9e4-4ada-9810-9bf64d67164a@kernel.org \
--to=dsahern@kernel.org \
--cc=atenart@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@kernel.org \
--cc=hangbin.liu@linux.dev \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=n0ps1edzz@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stable@vger.kernel.org \
/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.