Re: possible deadlock in cma_netdev_callback

From: Jason Gunthorpe
Date: Wed Feb 26 2020 - 15:42:42 EST


On Tue, Feb 25, 2020 at 09:39:10PM -0800, syzbot wrote:
> Hello,
>
> syzbot found the following crash on:
>
> HEAD commit: 6132c1d9 net: core: devlink.c: Hold devlink->lock from the..
> git tree: net
> console output: https://syzkaller.appspot.com/x/log.txt?x=16978909e00000
> kernel config: https://syzkaller.appspot.com/x/.config?x=3b8906eb6a7d6028
> dashboard link: https://syzkaller.appspot.com/bug?extid=55de90ab5f44172b0c90
> compiler: gcc (GCC) 9.0.0 20181231 (experimental)
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=12808281e00000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=134ca6fde00000
>
> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> Reported-by: syzbot+55de90ab5f44172b0c90@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> iwpm_register_pid: Unable to send a nlmsg (client = 2)
> infiniband syz1: RDMA CMA: cma_listen_on_dev, error -98
> netlink: 'syz-executor639': attribute type 1 has an invalid length.
> 8021q: adding VLAN 0 to HW filter on device bond1
> bond1: (slave gretap1): making interface the new active one
> ======================================================
> WARNING: possible circular locking dependency detected
> 5.6.0-rc2-syzkaller #0 Not tainted
> syz-executor639/9689 is trying to acquire lock:
> ffffffff8a5d2a60 (lock#3){+.+.}, at: cma_netdev_callback+0xc6/0x380 drivers/infiniband/core/cma.c:4605
>
> but task is already holding lock:
> ffffffff8a74da00 (rtnl_mutex){+.+.}, at: rtnl_lock net/core/rtnetlink.c:72 [inline]
> ffffffff8a74da00 (rtnl_mutex){+.+.}, at: rtnetlink_rcv_msg+0x405/0xaf0 net/core/rtnetlink.c:5433
>

Bernard, this is a siw bug too, it is not allowed to get RTNL in
siw_create_listen() (though this is probably for silly reasons and
could be fixed)

It is not easy to get this into the lockdep, I'll send a different
patch too

Jason