RE: KMSAN: uninit-value in __inet6_bind

From: Jon Maloy
Date: Fri Dec 14 2018 - 10:05:02 EST




> -----Original Message-----
> From: Cong Wang <xiyou.wangcong@xxxxxxxxx>
> Sent: 12-Dec-18 01:17
> To: Dmitry Vyukov <dvyukov@xxxxxxxxxx>
> Cc: syzbot+c56449ed3652e6720f30@xxxxxxxxxxxxxxxxxxxxxxxxx; Jon Maloy
> <jon.maloy@xxxxxxxxxxxx>; Ying Xue <ying.xue@xxxxxxxxxxxxx>; tipc-
> discussion@xxxxxxxxxxxxxxxxxxxxx; David Miller <davem@xxxxxxxxxxxxx>;
> Alexey Kuznetsov <kuznet@xxxxxxxxxxxxx>; LKML <linux-
> kernel@xxxxxxxxxxxxxxx>; Linux Kernel Network Developers
> <netdev@xxxxxxxxxxxxxxx>; syzkaller-bugs@xxxxxxxxxxxxxxxx; Hideaki
> YOSHIFUJI <yoshfuji@xxxxxxxxxxxxxx>
> Subject: Re: KMSAN: uninit-value in __inet6_bind
>
> On Tue, Dec 11, 2018 at 1:04 AM Dmitry Vyukov <dvyukov@xxxxxxxxxx>
> wrote:
> >
> > On Tue, Dec 11, 2018 at 1:41 AM syzbot
> > <syzbot+c56449ed3652e6720f30@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > Hello,
> > >
> > > syzbot found the following crash on:
> > >
> > > HEAD commit: 3f06bda61398 kmsan: remove excessive KMSAN
> wrappers from a..
> > > git tree: https://github.com/google/kmsan.git/master
> > > console output:
> > > https://syzkaller.appspot.com/x/log.txt?x=13ca6b05400000
> > > kernel config:
> > > https://syzkaller.appspot.com/x/.config?x=9b071100dcf8e641
> > > dashboard link:
> https://syzkaller.appspot.com/bug?extid=c56449ed3652e6720f30
> > > compiler: clang version 8.0.0 (trunk 348261)
> > >
> > > Unfortunately, I don't have any reproducer for this crash yet.
> > >
> > > IMPORTANT: if you fix the bug, please add the following tag to the
> commit:
> > > Reported-by: syzbot+c56449ed3652e6720f30@xxxxxxxxxxxxxxxxxxxxxxxxx
> >
> > This looks like a bug in TIPC, +TIPC maintainers.
> >
>
> It looks more like udp_sock_create6() doesn't initialize
> udp6_addr.sin6_scope_id.

Unfortunately udp_sock_create6() has no way of knowing this value, because struct udp_port_cfg is missing a field sin6_scope_id.
So this has to be fixed first by adding this field to the struct, and then setting it correctly in all current users.

///jon