All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Fastabend <john.fastabend@gmail.com>
To: Eric Dumazet <edumazet@google.com>,
	"David S . Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.kernel.org, eric.dumazet@gmail.com,
	Eric Dumazet <edumazet@google.com>,
	syzbot <syzkaller@googlegroups.com>,
	Jakub Sitnicki <jakub@cloudflare.com>,
	John Fastabend <john.fastabend@gmail.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Song Liu <songliubraving@fb.com>
Subject: RE: [PATCH net] bpf, sockmap: fix race in sock_map_free()
Date: Sat, 03 Dec 2022 11:24:27 -0800	[thread overview]
Message-ID: <638ba26b634d8_16f04208a2@john.notmuch> (raw)
In-Reply-To: <20221202111640.2745533-1-edumazet@google.com>

Eric Dumazet wrote:
> sock_map_free() calls release_sock(sk) without owning a reference
> on the socket. This can cause use-after-free as syzbot found [1]
> 
> Jakub Sitnicki already took care of a similar issue
> in sock_hash_free() in commit 75e68e5bf2c7 ("bpf, sockhash:
> Synchronize delete from bucket list on map free")
> 
> [1]
> refcount_t: decrement hit 0; leaking memory.
> WARNING: CPU: 0 PID: 3785 at lib/refcount.c:31 refcount_warn_saturate+0x17c/0x1a0 lib/refcount.c:31
> Modules linked in:
> CPU: 0 PID: 3785 Comm: kworker/u4:6 Not tainted 6.1.0-rc7-syzkaller-00103-gef4d3ea40565 #0
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
> Workqueue: events_unbound bpf_map_free_deferred
> RIP: 0010:refcount_warn_saturate+0x17c/0x1a0 lib/refcount.c:31
> Code: 68 8b 31 c0 e8 75 71 15 fd 0f 0b e9 64 ff ff ff e8 d9 6e 4e fd c6 05 62 9c 3d 0a 01 48 c7 c7 80 bb 68 8b 31 c0 e8 54 71 15 fd <0f> 0b e9 43 ff ff ff 89 d9 80 e1 07 80 c1 03 38 c1 0f 8c a2 fe ff
> RSP: 0018:ffffc9000456fb60 EFLAGS: 00010246
> RAX: eae59bab72dcd700 RBX: 0000000000000004 RCX: ffff8880207057c0
> RDX: 0000000000000000 RSI: 0000000000000201 RDI: 0000000000000000
> RBP: 0000000000000004 R08: ffffffff816fdabd R09: fffff520008adee5
> R10: fffff520008adee5 R11: 1ffff920008adee4 R12: 0000000000000004
> R13: dffffc0000000000 R14: ffff88807b1c6c00 R15: 1ffff1100f638dcf
> FS: 0000000000000000(0000) GS:ffff8880b9800000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000001b30c30000 CR3: 000000000d08e000 CR4: 00000000003506f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> Call Trace:
> <TASK>
> __refcount_dec include/linux/refcount.h:344 [inline]
> refcount_dec include/linux/refcount.h:359 [inline]
> __sock_put include/net/sock.h:779 [inline]
> tcp_release_cb+0x2d0/0x360 net/ipv4/tcp_output.c:1092
> release_sock+0xaf/0x1c0 net/core/sock.c:3468
> sock_map_free+0x219/0x2c0 net/core/sock_map.c:356
> process_one_work+0x81c/0xd10 kernel/workqueue.c:2289
> worker_thread+0xb14/0x1330 kernel/workqueue.c:2436
> kthread+0x266/0x300 kernel/kthread.c:376
> ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
> </TASK>
> 
> Fixes: 7e81a3530206 ("bpf: Sockmap, ensure sock lock held during tear down")
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Reported-by: syzbot <syzkaller@googlegroups.com>
> Cc: Jakub Sitnicki <jakub@cloudflare.com>
> Cc: John Fastabend <john.fastabend@gmail.com>
> Cc: Alexei Starovoitov <ast@kernel.org>
> Cc: Daniel Borkmann <daniel@iogearbox.net>
> Cc: Song Liu <songliubraving@fb.com>

Thanks.

Acked-by: John Fastabend <john.fastabend@gmail.com>

  reply	other threads:[~2022-12-03 19:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-02 11:16 [PATCH net] bpf, sockmap: fix race in sock_map_free() Eric Dumazet
2022-12-03 19:24 ` John Fastabend [this message]
2022-12-05  3:00 ` patchwork-bot+netdevbpf

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=638ba26b634d8_16f04208a2@john.notmuch \
    --to=john.fastabend@gmail.com \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=eric.dumazet@gmail.com \
    --cc=jakub@cloudflare.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=songliubraving@fb.com \
    --cc=syzkaller@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.