Re: [net PATCH v2] octeontx2-af: Move validation of ptp pointer before its usage

From: Dan Carpenter
Date: Fri Jun 30 2023 - 01:46:10 EST


On Fri, Jun 30, 2023 at 05:19:27AM +0000, Sai Krishna Gajula wrote:
>
> > -----Original Message-----
> > From: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> > Sent: Friday, June 23, 2023 5:14 PM
> > To: Sai Krishna Gajula <saikrishnag@xxxxxxxxxxx>
> > Cc: davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx;
> > pabeni@xxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; linux-
> > kernel@xxxxxxxxxxxxxxx; Sunil Kovvuri Goutham <sgoutham@xxxxxxxxxxx>;
> > maciej.fijalkowski@xxxxxxxxx; Naveen Mamindlapalli
> > <naveenm@xxxxxxxxxxx>
> > Subject: Re: [net PATCH v2] octeontx2-af: Move validation of ptp
> > pointer before its usage
> >
> > On Fri, Jun 23, 2023 at 11:28:19AM +0000, Sai Krishna Gajula wrote:
> > > > This probe function is super weird how it returns success on the failure
> > path.
> > > > One concern, I had initially was that if anything returns
> > > > -EPROBE_DEFER then we cannot recover. That's not possible in the
> > > > current code, but it makes me itch... But here is a different crash.
> > > >
> > >
> > > In few circumstances, the PTP device is probed before the AF device in
> > > the driver. In such instance, -EPROBE_DEFER is used.
> > > -- EDEFER_PROBE is useful when probe order changes. Ex: AF driver probes
> > before PTP.
> > >
> >
> > You're describing how -EPROBE_DEFER is *supposed* to work. But that's not
> > what this driver does.
> >
> > If the AF driver is probed before the PTP driver then ptp_probe() should
> > return -EPROBE_DEFER and that would allow the kernel to automatically retry
> > ptp_probe() later. But instead of that, ptp_probe() returns success. So I
> > guess the user would have to manually rmmod it and insmod it again? So,
> > what I'm saying I don't understand why we can't do this in the normal way.
> >
> > The other thing I'm saying is that the weird return success on error stuff
> > hasn't been tested or we would have discovered the crash through testing.
> >
> > regards,
> > dan carpenter
>
> As suggested, we will return error in ptp_probe in case of any
> failure conditions. In this case AF driver continues without PTP support.

I'm concerned about the "AF driver continues without PTP support".

> When the AF driver is probed before PTP driver , we will defer the AF
> probe. Hope these changes are inline with your view.
> I will send a v3 patch with these changes.
>

I don't really understand the situation. You have two drivers.
Normally, the relationship is very simple where you have to load one
before you can load the other. But here it sounds like the relationships
are very complicated and you are loading one in a degraded state for
some reason...

When drivers are loaded that happens in drivers/base/dd.c. We start
with a list of drivers to probe. Then if any of them return
-EPROBE_DEFER, we put them on deferred_probe_pending_list. Then as soon
as we manage to probe another driver successfully we put the drivers on
deferred_probe_pending_list onto another list and start trying to probe
them again.

That process continues until we've gone through the list of drivers and
nothing succeeds.

regards,
dan carpenter