On Mon, Jan 23, 2023 at 10:33:05PM -0800, Jakub Kicinski wrote: > On Thu, 19 Jan 2023 22:05:28 -0800 Ajit Khaparde wrote: > > @@ -13212,6 +13214,7 @@ static void bnxt_remove_one(struct pci_dev *pdev) > > kfree(bp->rss_indir_tbl); > > bp->rss_indir_tbl = NULL; > > bnxt_free_port_stats(bp); > > + bnxt_aux_priv_free(bp); > > free_netdev(dev); > > You're still freeing the memory in which struct device sits regardless > of its reference count. BTW, Ajit does the same wrong kfree in bnxt_rdma_aux_device_add() too. + ret = auxiliary_device_add(aux_dev); + if (ret) + goto aux_dev_uninit; + ... +aux_dev_uninit: + auxiliary_device_uninit(aux_dev); +free_edev: + kfree(edev); <----- wrong + bp->edev = NULL; Thanks