On Thu, Aug 31, 2017 at 09:27:31AM +0530, Somnath Kotur wrote: > Clean up all devices added to the bnxt_re_dev_list in the > module_exit entry point. > > Signed-off-by: Somnath Kotur <somnath.kotur@xxxxxxxxxxxx> > --- > drivers/infiniband/hw/bnxt_re/main.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c > index 82d1cbc..00a3b74 100644 > --- a/drivers/infiniband/hw/bnxt_re/main.c > +++ b/drivers/infiniband/hw/bnxt_re/main.c > @@ -1375,6 +1375,22 @@ static int __init bnxt_re_mod_init(void) > > static void __exit bnxt_re_mod_exit(void) > { > + struct bnxt_re_dev *rdev; > + LIST_HEAD(to_be_deleted); > + > + mutex_lock(&bnxt_re_dev_lock); > + /* Free all adapter allocated resources */ > + if (!list_empty(&bnxt_re_dev_list)) Hi Somnath, How is it possible to have the bnxt_re_dev_list to be empty at this stage? Doesn't the call to bnxt_re_mod_exit mean that at least one entry exists? Thanks > + list_splice_init(&bnxt_re_dev_list, &to_be_deleted); > + mutex_unlock(&bnxt_re_dev_lock); > + > + list_for_each_entry(rdev, &to_be_deleted, list) { > + dev_info(rdev_to_dev(rdev), "Unregistering Device"); > + bnxt_re_dev_stop(rdev); > + bnxt_re_ib_unreg(rdev, true); > + bnxt_re_remove_one(rdev); > + bnxt_re_dev_unreg(rdev); > + } > unregister_netdevice_notifier(&bnxt_re_netdev_notifier); > if (bnxt_re_wq) > destroy_workqueue(bnxt_re_wq); > -- > 1.8.3.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html
Attachment:
signature.asc
Description: PGP signature