On Wed, Apr 23, 2025 at 03:59:07PM +0530, Abhijit Gangurde wrote: > +static int ionic_aux_probe(struct auxiliary_device *adev, > + const struct auxiliary_device_id *id) > +{ > + struct ionic_aux_dev *ionic_adev; > + struct net_device *ndev; > + struct ionic_ibdev *dev; > + > + ionic_adev = container_of(adev, struct ionic_aux_dev, adev); > + ndev = ionic_api_get_netdev_from_handle(ionic_adev->handle); It must not do this, the net_device should not go into the IB driver, like this that will create a huge complex tangled mess. The netdev(s) come in indirectly through the gid table and through the net notifiers and ib_device_set_netdev() and they should only be touched in paths dealing with specific areas. So don't use things like netdev_err, we have ib_err/dev_err and related instead for IB drivers to use. > +struct ionic_ibdev { > + struct ib_device ibdev; > + > + struct device *hwdev; > + struct net_device *ndev; Same here, this member should not exist, and it didn't hold a refcount for this pointer. Jason