Subject: Re: INFO: rcu detected stall in is_bpf_text_address

From: Marcelo Ricardo Leitner <[email-masked]>
Date: Mon, 28 May 2018 14:55:46 -0300

On Sun, May 20, 2018 at 04:26:03PM +0800, Xin Long wrote:
> On Sat, May 19, 2018 at 11:57 PM, Eric Dumazet <[email-masked]> 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.