-----"Bart Van Assche" <bvanassche@xxxxxxx> wrote: ----- >To: "Bernard Metzler" <bmt@xxxxxxxxxxxxxx>, >linux-rdma@xxxxxxxxxxxxxxx >From: "Bart Van Assche" <bvanassche@xxxxxxx> >Date: 08/24/2019 01:02AM >Subject: [EXTERNAL] siw trigger BUG: sleeping function called from >invalid context at mm/slab.h:50 > >Hi Bernard, > >If I try to associate the ib_srpt driver with the siw driver the >complaint shown below appears on the console. In iw_cm_listen() I >found the following: > > [ ... ] > spin_lock_irqsave(&cm_id_priv->lock, flags); > switch (cm_id_priv->state) { > case IW_CM_STATE_IDLE: > cm_id_priv->state = IW_CM_STATE_LISTEN; > spin_unlock_irqrestore(&cm_id_priv->lock, flags); > ret = iw_cm_map(cm_id, false); > if (!ret) > ret = cm_id->device->ops.iw_create_listen(cm_id, > backlog); > if (ret) > cm_id_priv->state = IW_CM_STATE_IDLE; > spin_lock_irqsave(&cm_id_priv->lock, flags); > break; > default: > ret = -EINVAL; > } > spin_unlock_irqrestore(&cm_id_priv->lock, flags); > [ ... ] > >So it surprises me that siw_listen_address() calls a function that >can sleep. Do you think this is a correct analysis of the call trace >shown below? > Hi Bart, Yes, this is a BUG. Thanks very much for spotting it! Obviously, there is not similar thing for ipv6 like 'in_dev_for_each_ifa_rtnl()'. Let me think about a good fix to that and come back asap. Many thanks! Bernard.