Re: possible deadlock in cma_netdev_callback

From: Jason Gunthorpe
Date: Thu Feb 27 2020 - 11:46:25 EST


On Thu, Feb 27, 2020 at 04:21:21PM +0000, Bernard Metzler wrote:
>
> >To: "Bernard Metzler" <BMT@xxxxxxxxxxxxxx>
> >From: "Jason Gunthorpe" <jgg@xxxxxxxx>
> >Date: 02/27/2020 04:53PM
> >Cc: "syzbot" <syzbot+55de90ab5f44172b0c90@xxxxxxxxxxxxxxxxxxxxxxxxx>,
> >chuck.lever@xxxxxxxxxx, dledford@xxxxxxxxxx, leon@xxxxxxxxxx,
> >linux-kernel@xxxxxxxxxxxxxxx, linux-rdma@xxxxxxxxxxxxxxx,
> >netdev@xxxxxxxxxxxxxxx, parav@xxxxxxxxxxxx,
> >syzkaller-bugs@xxxxxxxxxxxxxxxx, willy@xxxxxxxxxxxxx
> >Subject: [EXTERNAL] Re: possible deadlock in cma_netdev_callback
> >
> >On Thu, Feb 27, 2020 at 10:11:13AM +0000, Bernard Metzler wrote:
> >
> >> Thanks for letting me know! Hmm, we cannot use RCU locks since
> >> we potentially sleep. One solution would be to create a list
> >> of matching interfaces while under lock, unlock and use that
> >> list for calling siw_listen_address() (which may sleep),
> >> right...?
> >
> >Why do you need to iterate over addresses anyhow? Shouldn't the
> >listen
> >just be done with the address the user gave and a BIND DEVICE to the
> >device siw is connected to?
>
> The user may give a wildcard local address, so we'd have
> to bind to all addresses of that device...

AFAIK a wild card bind using BIND DEVICE works just fine?

Jason