On Wed, Mar 24, 2021 at 04:25:24PM +0200, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@xxxxxxxxxx> > > Instead of manually messing with parent driver module reference > counting, rely on "depends on" keyword to ensure that proper > probe/remove chain is performed. ?? kconfig doesn't impact module ordering. To have a proper remove chain there should be a symbol reference from bnxt_re to whatever the other module is > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> > drivers/infiniband/hw/bnxt_re/Kconfig | 4 +--- > drivers/infiniband/hw/bnxt_re/main.c | 20 +++++--------------- > 2 files changed, 6 insertions(+), 18 deletions(-) > > diff --git a/drivers/infiniband/hw/bnxt_re/Kconfig b/drivers/infiniband/hw/bnxt_re/Kconfig > index 0feac5132ce1..b4779a6cd565 100644 > +++ b/drivers/infiniband/hw/bnxt_re/Kconfig > @@ -2,9 +2,7 @@ > config INFINIBAND_BNXT_RE > tristate "Broadcom Netxtreme HCA support" > depends on 64BIT > - depends on ETHERNET && NETDEVICES && PCI && INET && DCB > - select NET_VENDOR_BROADCOM > - select BNXT > + depends on ETHERNET && NETDEVICES && PCI && INET && DCB && BNXT Though this is correct, BNXT is a 'tristate' so it should be referenced with depends on select. > diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c > index fdb8c2478258..a81adb07e5d9 100644 > +++ b/drivers/infiniband/hw/bnxt_re/main.c > @@ -561,13 +561,6 @@ static struct bnxt_re_dev *bnxt_re_from_netdev(struct net_device *netdev) > return container_of(ibdev, struct bnxt_re_dev, ibdev); > } > > -static void bnxt_re_dev_unprobe(struct net_device *netdev, > - struct bnxt_en_dev *en_dev) > -{ > - dev_put(netdev); > - module_put(en_dev->pdev->driver->driver.owner); > -} And you are right to be wondering WTF is this Jason