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. Greg, is it legal to call: auxiliary_device_delete(adev); // AKA device_del(&auxdev->dev); auxiliary_device_uninit(adev); // AKA put_device(&auxdev->dev); free(adev); // frees struct device ? I tried to explain this three times, maybe there's some wait during device_del() I'm not seeing which makes this safe :S