IB/cm: Do not queue work to a device that's going away
authorErez Shitrit <erezsh@mellanox.com>
Thu, 25 Jun 2015 14:13:22 +0000 (17:13 +0300)
committerDoug Ledford <dledford@redhat.com>
Tue, 14 Jul 2015 17:20:09 +0000 (13:20 -0400)
commitbe4b499323bf7291b491c6df51baae62f45b8404
treedf0cd8aa8da001f70104e59fe35a3b64e415716d
parent3fdf70acec13efc7ecf254f5a364df06348bfd2c
IB/cm: Do not queue work to a device that's going away

Whenever ib_cm gets remove_one call, like when there is a hot-unplug
event, the driver should mark itself as going_down and confirm that no
new works are going to be queued for that device.
so, the order of the actions are:
1. mark the going_down bit.
2. flush the wq.
3. [make sure no new works for that device.]
4. unregister mad agent.

otherwise, works that are already queued can be scheduled after the mad
agent was freed.

Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/cm.c