memory leak in sctp_stream_init_ext (2)

15 views
Skip to first unread message

syzbot

unread,
Apr 16, 2020, 11:45:11 PM4/16/20
to da...@davemloft.net, ku...@kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, marcelo...@gmail.com, net...@vger.kernel.org, nho...@tuxdriver.com, syzkall...@googlegroups.com, vyas...@gmail.com
Hello,

syzbot found the following crash on:

HEAD commit: 00086336 Merge tag 'efi-urgent-2020-04-15' of git://git.ke..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=12996107e00000
kernel config: https://syzkaller.appspot.com/x/.config?x=efff978b972fb2c
dashboard link: https://syzkaller.appspot.com/bug?extid=96e916d6f6f7617bc9fc
compiler: gcc (GCC) 9.0.0 20181231 (experimental)
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=137ddf3fe00000

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: syzbot+96e916...@syzkaller.appspotmail.com

BUG: memory leak
unreferenced object 0xffff888103ba4580 (size 96):
comm "syz-executor.1", pid 8335, jiffies 4294953411 (age 14.410s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<00000000b06f3e80>] kmalloc include/linux/slab.h:555 [inline]
[<00000000b06f3e80>] kzalloc include/linux/slab.h:669 [inline]
[<00000000b06f3e80>] sctp_stream_init_ext+0x28/0xe0 net/sctp/stream.c:162
[<00000000aff2ecba>] sctp_sendmsg_to_asoc+0x9af/0xab0 net/sctp/socket.c:1811
[<00000000d5d5eb76>] sctp_sendmsg+0x2a6/0xc60 net/sctp/socket.c:2031
[<0000000023cdbfa3>] inet_sendmsg+0x39/0x60 net/ipv4/af_inet.c:807
[<00000000885878ef>] sock_sendmsg_nosec net/socket.c:652 [inline]
[<00000000885878ef>] sock_sendmsg+0x4c/0x60 net/socket.c:672
[<0000000009d727e5>] __sys_sendto+0x11d/0x1c0 net/socket.c:2000
[<0000000066974477>] __do_sys_sendto net/socket.c:2012 [inline]
[<0000000066974477>] __se_sys_sendto net/socket.c:2008 [inline]
[<0000000066974477>] __x64_sys_sendto+0x26/0x30 net/socket.c:2008
[<00000000ecc1fea9>] do_syscall_64+0x6e/0x220 arch/x86/entry/common.c:295
[<00000000605d798b>] entry_SYSCALL_64_after_hwframe+0x44/0xa9



---
This bug is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this bug report. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
syzbot can test patches for this bug, for details see:
https://goo.gl/tpsmEJ#testing-patches

Hillf Danton

unread,
Apr 17, 2020, 4:32:56 AM4/17/20
to syzbot, da...@davemloft.net, ku...@kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, marcelo...@gmail.com, net...@vger.kernel.org, nho...@tuxdriver.com, syzkall...@googlegroups.com, vyas...@gmail.com

On Thu, 16 Apr 2020 20:45:10 -0700
Release ext in case of failure of initializing stream.

--- a/net/sctp/stream.c
+++ b/net/sctp/stream.c
@@ -145,9 +145,10 @@ in:
ret = sctp_stream_alloc_in(stream, incnt, gfp);
if (ret) {
sched->free(stream);
+ for (i = 0; i < stream->outcnt; i++)
+ kfree(SCTP_SO(stream, i)->ext);
genradix_free(&stream->out);
stream->outcnt = 0;
- goto out;
}

out:

Marcelo Ricardo Leitner

unread,
Apr 17, 2020, 9:31:15 AM4/17/20
to Hillf Danton, syzbot, da...@davemloft.net, ku...@kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, net...@vger.kernel.org, nho...@tuxdriver.com, syzkall...@googlegroups.com, vyas...@gmail.com
Are you working on the right code? Seems you're missing
61d5d4062876 ("sctp: fix err handling of stream initialization")

Anyhow, the patch intention looks right.

Hillf Danton

unread,
Apr 18, 2020, 5:00:58 AM4/18/20
to Marcelo Ricardo Leitner, syzbot, da...@davemloft.net, ku...@kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, net...@vger.kernel.org, nho...@tuxdriver.com, syzkall...@googlegroups.com, vyas...@gmail.com

On Fri, 17 Apr 2020 10:31:10 -0300 Marcelo Ricardo Leitner wrote:
>
> On Fri, Apr 17, 2020 at 04:32:24PM +0800, Hillf Danton wrote:
> >
> > Release ext in case of failure of initializing stream.
> >
> > --- a/net/sctp/stream.c
> > +++ b/net/sctp/stream.c
> > @@ -145,9 +145,10 @@ in:
> > ret = sctp_stream_alloc_in(stream, incnt, gfp);
> > if (ret) {
>
> Are you working on the right code?

No definitely.

> Seems you're missing
> 61d5d4062876 ("sctp: fix err handling of stream initialization")

You're right.

Thanks for your tip point and on top of 61d5d4062876 it then
looks like

--- a/net/sctp/stream.c
+++ b/net/sctp/stream.c
@@ -149,6 +149,10 @@ in_err:
genradix_free(&stream->in);
out_err:
genradix_free(&stream->out);
+ for (i = 0; i < stream->outcnt; i++) {
+ kfree(SCTP_SO(stream, i)->ext);
+ SCTP_SO(stream, i)->ext = NULL;
+ }
stream->outcnt = 0;
out:
return ret;
--

syzbot

unread,
Oct 10, 2022, 9:43:31 AM10/10/22
to syzkall...@googlegroups.com
Auto-closing this bug as obsolete.
No recent activity, existing reproducers are no longer triggering the issue.
Reply all
Reply to author
Forward
0 new messages