Re: [PATCH 1/2] Revert "drivers: core: synchronize really_probe() and dev_uevent()"

From: Greg Kroah-Hartman
Date: Tue Feb 25 2025 - 01:22:45 EST


On Mon, Feb 24, 2025 at 06:17:36PM -0800, Dmitry Torokhov wrote:
> On Wed, Feb 19, 2025 at 11:22:25PM -0800, Dmitry Torokhov wrote:
> > On February 19, 2025 11:13:00 PM PST, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > >On Wed, Feb 19, 2025 at 10:46:44PM -0800, Dmitry Torokhov wrote:
> > >> This reverts commit c0a40097f0bc81deafc15f9195d1fb54595cd6d0.
> > >>
> > >> Probing a device can take arbitrary long time. In the field we observed
> > >> that, for example, probing a bad micro-SD cards in an external USB card
> > >> reader (or maybe cards were good but cables were flaky) sometimes takes
> > >> longer than 2 minutes due to multiple retries at various levels of the
> > >> stack. We can not block uevent_show() method for that long because udev
> > >> is reading that attribute very often and that blocks udev and interferes
> > >> with booting of the system.
> > >>
> > >> The change that introduced locking was concerned with dev_uevent()
> > >> racing with unbinding the driver. However we can handle it without
> > >> locking (which will be done in subsequent patch).
> > >
> > >So shouldn't we take the second patch first to prevent any issues here?
> >
> > I think the potential for the NULL dereference is extremely small, we
> > lived with it for many years. But if you prefer the patches can be
> > swapped.
>
> Greg, I was looking at this again and I do not think it makes sense to
> swap the patches, as then explanation and justification makes no sense.
> So we can either keep it as a straight revert and then address the
> driver pointer handling, or combine the 2. What would be your
> preference?

Your original sequence is fine, it makes more sense as you point out.

> I will need to respin to address Rafael's comment anyways.

That would be great, thanks!

greg k-h