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

From: Jarkko Sakkinen
Date: Fri Aug 11 2017 - 07:51:04 EST


On Wed, Aug 09, 2017 at 03:52:02PM -0600, Jason Gunthorpe wrote:
> On Wed, Aug 09, 2017 at 11:34:20PM +0200, Michal Suchanek wrote:
> > Disabling the driver hook by setting class hook is totally sound design
> > not prone to error as evidenced by the single implementation of the
> > class hook.
>
> It was done this was for consistency, if you look at the full code:
>
> if (dev->class && dev->class->shutdown) {
> if (initcall_debug)
> dev_info(dev, "shutdown\n");
> dev->class->shutdown(dev);
> } else if (dev->bus && dev->bus->shutdown) {
> if (initcall_debug)
> dev_info(dev, "shutdown\n");
> dev->bus->shutdown(dev);
> } else if (dev->driver && dev->driver->shutdown) {
> if (initcall_debug)
> dev_info(dev, "shutdown\n");
> dev->driver->shutdown(dev);
> }
>
> The bus disables the driver callback, on the expectation that the bus
> implementation will do it.
>
> Existing bus implementations do properly chain to driver shutdown (eg
> look at mmc_bus_shutdown) and it appears to have been written like
> this so that the bus can insert code before and after calling the
> driver shutdown.
>
> Making class act differently from bus seems very confusing, IHMO,
> which why the TPM patch was written to follow the existing pattern.
>
> Jason

There's also more fundamental problem. There are Fixes tags but no
real regression. Even if this patch made sense I would not consider
it as a bug fix.

/Jarkko