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

From: Dmitry Torokhov
Date: Mon Feb 24 2025 - 21:17:47 EST


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?

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

Thanks.

--
Dmitry