On Sun, May 20, 2018 at 04:26:03PM +0800, Xin Long wrote: > On Sat, May 19, 2018 at 11:57 PM, Eric Dumazet <eric.duma...@gmail.com> wrote: > > SCTP experts, please take a look. > > > > On 05/19/2018 08:55 AM, syzbot wrote: > >> Hello, > >> > >> syzbot found the following crash on: > >> > >> HEAD commit: 73fcb1a370c7 Merge branch 'akpm' (patches from Andrew) > >> git tree: upstream > >> console output: https://syzkaller.appspot.com/x/log.txt?x=1462ec0f800000 > >> kernel config: https://syzkaller.appspot.com/x/.config?x=f3b4e30da84ec1ed > >> dashboard link: > >> https://syzkaller.appspot.com/bug?extid=3dcd59a1f907245f891f > >> compiler: gcc (GCC) 8.0.1 20180413 (experimental) > >> syzkaller repro:https://syzkaller.appspot.com/x/repro.syz?x=1079cf8f800000 > Thank you. > The Reproducer is more than helpful. > > setsockopt$inet_sctp6_SCTP_RTOINFO(r0, 0x84, 0x0, > &(0x7f0000000140)={0x0, 0x6, 0x7, 0x4}, 0x10) > > It set rto_min=6 and rto_max=7, these are too small values.
Considering struct sctp_rtoinfo { sctp_assoc_t srto_assoc_id; __u32 srto_initial; __u32 srto_max; __u32 srto_min; }; Isn't this actually equivalent to: struct sctp_rtoinfo foo = { .srto_assoc_id = 0, .srto_initial = 6, .srto_max = 7, .srto_min = 4 /* instead of 6 */ }; ? This doesn't change a thing in the analysis, it's just to be sure which one is right.