From: Florian Westphal <fw@strlen.de>
To: Florian Westphal <fw@strlen.de>
Cc: Kuniyuki Iwashima <kuniyu@amazon.com>,
syzbot+8ea26396ff85d23a8929@syzkaller.appspotmail.com,
davem@davemloft.net, dsahern@kernel.org, edumazet@google.com,
kuba@kernel.org, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org, pabeni@redhat.com,
syzkaller-bugs@googlegroups.com
Subject: Re: [syzbot] [net?] WARNING: refcount bug in inet_twsk_kill
Date: Sun, 11 Aug 2024 16:54:43 +0200 [thread overview]
Message-ID: <20240811145443.GD13736@breakpoint.cc> (raw)
In-Reply-To: <20240811132411.GB13736@breakpoint.cc>
Florian Westphal <fw@strlen.de> wrote:
> > I came up with the diff below but was suspecting a bug in another place,
> > possibly QEMU, so I haven't posted the diff officially.
> >
> > refcount_inc() was actually deferred, but it's still under an ehash lock,
>
> but different struct inet_hashinfo, so the locks don't help :/
No, fallback is fine: pernet tw_refcount, init_net ehash lock array. so
they same buckets should serialize on same ehash lock.
https://syzkaller.appspot.com/x/log.txt?x=117f3182980000
... shows at two cores racing:
[ 3127.234402][ T1396] CPU: 3 PID: 1396 Comm: syz-executor.3 Not
and
[ 3127.257864][ T13] CPU: 1 PID: 13 Comm: kworker/u32:1 Not tainted 6.9.0-syzkalle (netns cleanup net).
first splat backtrace shows invocation of tcp_sk_exit_batch() from
netns error unwinding code.
Second one lacks backtrace, but its also in tcp_sk_exit_batch(),
likely walking init_net tcp_hashinfo.
The warn of second core is:
WARN_ON_ONCE(!refcount_dec_and_test(&net->ipv4.tcp_death_row.tw_refcount));
Looks like somehow netns cleanup work queue skipped at least one tw sk,
hitting above splat.
Then, first core did refcount_dec() on tw_refcount, which produces
dec-to-0 warn (which makes sense if "supposedly final" decrement was
already done.
next prev parent reply other threads:[~2024-08-11 14:54 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-11 1:29 [syzbot] [net?] WARNING: refcount bug in inet_twsk_kill syzbot
2024-08-11 2:29 ` Kuniyuki Iwashima
2024-08-11 5:42 ` Jason Xing
2024-08-11 13:24 ` Florian Westphal
2024-08-11 14:54 ` Florian Westphal [this message]
2024-08-11 16:28 ` Florian Westphal
2024-08-11 23:00 ` Kuniyuki Iwashima
2024-08-11 23:08 ` Kuniyuki Iwashima
2024-08-12 0:36 ` Jason Xing
2024-08-12 14:01 ` Florian Westphal
2024-08-12 14:30 ` Jason Xing
2024-08-12 15:03 ` Florian Westphal
2024-08-12 15:49 ` Jason Xing
2024-08-12 20:00 ` Kuniyuki Iwashima
2024-08-12 22:28 ` [PATCH net] tcp: prevent concurrent execution of tcp_sk_exit_batch Florian Westphal
2024-08-12 23:28 ` Kuniyuki Iwashima
2024-08-12 23:52 ` Florian Westphal
2024-08-13 0:01 ` Kuniyuki Iwashima
2024-08-13 2:48 ` Jason Xing
2024-08-15 10:47 ` Paolo Abeni
2024-08-19 15:36 ` Eric Dumazet
2024-08-19 15:50 ` patchwork-bot+netdevbpf
2024-08-11 13:32 ` [syzbot] [net?] WARNING: refcount bug in inet_twsk_kill Florian Westphal
2024-08-11 22:35 ` Kuniyuki Iwashima
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=20240811145443.GD13736@breakpoint.cc \
--to=fw@strlen.de \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=kuniyu@amazon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=syzbot+8ea26396ff85d23a8929@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
/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.