On Sun, Dec 18, 2016 at 10:20:47AM -0700, Logan Gunthorpe wrote: > Hi Greg, > > Thanks for the quick review! > > On 18/12/16 12:51 AM, Greg Kroah-Hartman wrote: > > On Sat, Dec 17, 2016 at 10:09:22AM -0700, Logan Gunthorpe wrote: > > > +struct switchtec_dev { > > > + struct pci_dev *pdev; > > > + struct msix_entry *msix; > > > + struct device *dev; > > > + struct kref kref; > > > > Why do you have a pointer to a device, yet a kref as well? Just have > > this structure embed a 'struct device' in itself, like you did for a > > kref, and you will be fine. Otherwise you are dealing with two > > different sets of reference counting here, for no good reason. > > Ok, understood. I had referenced the device dax driver which did it this way > in 4.8 but looks like it was changed to the way you suggest in 4.9. > > > > +#define stdev_pdev(stdev) ((stdev)->pdev) > > > +#define stdev_pdev_dev(stdev) (&stdev_pdev(stdev)->dev) > > > +#define stdev_name(stdev) pci_name(stdev_pdev(stdev)) > > > +#define stdev_dev(stdev) ((stdev)->dev) > > > > Ick, just open code these please. That's a huge hint your use of the > > driver model is not correct :) > > Ok, will do. For reference, I was copying > > drivers/ntb/hw/intel/ntb_hw_intel.h > > which does a similar thing. No need to copy bad code, I suggest fixing that up as well :) thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html