Re: [PATCH] Do not disable driver and bus shutdown hook when class shutdown hook is set.

Henrique de Moraes Holschuh <[email protected]>
Newsgroups net.sourceforge.lists.tpmdd-devel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Fri, 11 Aug 2017, Michal Suchánek wrote:
> On 2017-08-10 18:30, Jason Gunthorpe wrote:
> > On Thu, Aug 10, 2017 at 12:18:11PM +0200, Michal Suchánek wrote:
> > > > Existing bus implementations do properly chain to driver shutdown (eg
> > > > look at mmc_bus_shutdown) and it appears to have been written like
> > > 
> > > Neither isa nor ibmebus does. These are two random buses I tried to
> > > look at.
> > 
> > I'm not following, I see this:
> > 
> > static void ibmebus_bus_device_shutdown(struct device *dev)
> > {
> >         struct platform_device *of_dev = to_platform_device(dev);
> >         struct platform_driver *drv = to_platform_driver(dev->driver);
> > 
> >         if (dev->driver && drv->shutdown)
> >                 drv->shutdown(of_dev);
> > }
> > 
> > It looks to me like in this case the struct device_driver shutdown is
> > not used, and instead the struct platform_driver shutdown is called.
> 
> And it is not used even if a device driver sets it and expects it to run.

Which is the kind of landmine it is best avoided in drivers/, so it
would be nice to get WARN_ON() during device register when
dev->shutdown() methods *that are going to be ignored* because of
class/bus handlers are non-NULL...

Either that, or the device->shutdown() methods should always be called,
and drivers that should not/need not have them should be fixed...

-- 
  Henrique Holschuh
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.