Re: [PATCH 1/2] zram: fix crashes due to use of cpu hotplug multistate

From: Greg KH
Date: Thu Apr 08 2021 - 04:56:01 EST


On Thu, Apr 08, 2021 at 10:35:17AM +0200, Jiri Kosina wrote:
> On Thu, 8 Apr 2021, Greg KH wrote:
>
> > > If there is a driver/subsystem code that can't handle the reverse
> > > operation to modprobe, it clearly can't handle error handling during
> > > modprobe (which, one would hope, is supported), and should be fixed.
> >
> > Huh? No, that's not the issue here, it's the issue of different
> > userspace code paths into the module at the same time that it is trying
> > to be unloaded. That has nothing to do with loading the module the
> > first time as userspace is not touching those apis yet.
>
> So do you claim that once the first (out of possibly many)
> userspace-visible sysfs entry has been created during module insertion and
> made available to userspace, there is never going to be rollback happening
> that'd be removing that first sysfs entry again?

{sigh}

I'm not trying to argue that, no.

What I am arguing is that the complexity that the original patch was
not worth the low probablity of this actually being an issue hit in
real-life operations.

That's all, messing around with sysfs entries and module reference
counts is tricky and complex and a total mess. We have a separation
between normal sysfs files and devices being removed that should handle
the normal operations but there are still some crazy corner cases, of
which this seems to be one.

Module removal is not a "normal" operation that can be triggered by a
system automatically without a user asking for it. As someone reminded
me on IRC, we used to do this "automatically" for many problematic
drivers years ago for suspend/resume, that should all now be long fixed
up.

So to add crazy complexity to the kernel, for an operation that can only
be triggered manually by a root user, is not worth it in my opinion, as
the maintainer of that code the complexity was asked to be made to.

My throw-away comment of "module unloading is not supported" was an
attempt to summarize all of the above into one single sentence that
seems to have struck a nerve with a lot of people, and I appologize for
that :(

thanks,

greg k-h