Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752396AbcLSGfH (ORCPT ); Mon, 19 Dec 2016 01:35:07 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:40864 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750812AbcLSGfF (ORCPT ); Mon, 19 Dec 2016 01:35:05 -0500 Date: Mon, 19 Dec 2016 07:35:15 +0100 From: Greg Kroah-Hartman To: Logan Gunthorpe Cc: Bjorn Helgaas , Geert Uytterhoeven , Jonathan Corbet , "David S. Miller" , Andrew Morton , Emil Velikov , Mauro Carvalho Chehab , Guenter Roeck , Kurt Schwemmer , Stephen Bates , linux-pci@vger.kernel.org, linux-doc@vger.kernel.org, linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [RFC 1/1] MicroSemi Switchtec management interface driver Message-ID: <20161219063515.GA5814@kroah.com> References: <1481994562-9283-1-git-send-email-logang@deltatee.com> <1481994562-9283-2-git-send-email-logang@deltatee.com> <20161218075141.GE29850@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.7.2 (2016-11-26) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1358 Lines: 40 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