drivers/net/phy/micrel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Currently, during the LAN8814 PTP probe shared->phydev is only set if PTP
clock gets actually set, otherwise the function will return before setting
it.
This is an issue as shared->phydev is unconditionally being used when IRQ
is being handled, especially in lan8814_gpio_process_cap and since it was
not set it will cause a NULL pointer exception and crash the kernel.
So, simply always set shared->phydev to avoid the NULL pointer exception.
Fixes: b3f1a08fcf0d ("net: phy: micrel: Add support for PTP_PF_EXTTS for lan8814")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
drivers/net/phy/micrel.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 16855bf8c391..4929f9b81f54 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -4285,6 +4285,8 @@ static int __lan8814_ptp_probe_once(struct phy_device *phydev, char *pin_name,
{
struct lan8814_shared_priv *shared = phy_package_get_priv(phydev);
+ shared->phydev = phydev;
+
/* Initialise shared lock for clock*/
mutex_init(&shared->shared_lock);
@@ -4340,8 +4342,6 @@ static int __lan8814_ptp_probe_once(struct phy_device *phydev, char *pin_name,
phydev_dbg(phydev, "successfully registered ptp clock\n");
- shared->phydev = phydev;
-
/* The EP.4 is shared between all the PHYs in the package and also it
* can be accessed by any of the PHYs
*/
--
2.51.0
On Tue, 21 Oct 2025 15:20:26 +0200 Robert Marko wrote:
> Currently, during the LAN8814 PTP probe shared->phydev is only set if PTP
> clock gets actually set, otherwise the function will return before setting
> it.
>
> This is an issue as shared->phydev is unconditionally being used when IRQ
> is being handled, especially in lan8814_gpio_process_cap and since it was
> not set it will cause a NULL pointer exception and crash the kernel.
>
> So, simply always set shared->phydev to avoid the NULL pointer exception.
>
> Fixes: b3f1a08fcf0d ("net: phy: micrel: Add support for PTP_PF_EXTTS for lan8814")
> Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Hopefully I'm not misunderstanding the situation, but since we're
considering taking the other patchset via net-next I'll apply
already this to prevent crashes in net..
On Thu, Oct 23, 2025 at 4:13 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Tue, 21 Oct 2025 15:20:26 +0200 Robert Marko wrote:
> > Currently, during the LAN8814 PTP probe shared->phydev is only set if PTP
> > clock gets actually set, otherwise the function will return before setting
> > it.
> >
> > This is an issue as shared->phydev is unconditionally being used when IRQ
> > is being handled, especially in lan8814_gpio_process_cap and since it was
> > not set it will cause a NULL pointer exception and crash the kernel.
> >
> > So, simply always set shared->phydev to avoid the NULL pointer exception.
> >
> > Fixes: b3f1a08fcf0d ("net: phy: micrel: Add support for PTP_PF_EXTTS for lan8814")
> > Signed-off-by: Robert Marko <robert.marko@sartura.hr>
>
> Hopefully I'm not misunderstanding the situation, but since we're
> considering taking the other patchset via net-next I'll apply
> already this to prevent crashes in net..
That would be great, as Horatiu explained, if PTP_1588_CLOCK is not
enabled in the kernel config
kernel will crash with a NULL pointer exception as soon as the first
interrupt is being handled.
It is not tied to the pending [PATCH net-next v2] net: phy: micrel:
Add support for non-PTP SKUs for lan8814
patch.
Regards,
Robert
--
Robert Marko
Staff Embedded Linux Engineer
Sartura d.d.
Lendavska ulica 16a
10000 Zagreb, Croatia
Email: robert.marko@sartura.hr
Web: www.sartura.hr
On Tue, Oct 21, 2025 at 03:20:26PM +0200, Robert Marko wrote:
> Currently, during the LAN8814 PTP probe shared->phydev is only set if PTP
> clock gets actually set, otherwise the function will return before setting
> it.
>
> This is an issue as shared->phydev is unconditionally being used when IRQ
> is being handled, especially in lan8814_gpio_process_cap and since it was
> not set it will cause a NULL pointer exception and crash the kernel.
>
> So, simply always set shared->phydev to avoid the NULL pointer exception.
>
> Fixes: b3f1a08fcf0d ("net: phy: micrel: Add support for PTP_PF_EXTTS for lan8814")
> Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Please could you look at how this patch and
[PATCH net-next v2] net: phy: micrel: Add support for non PTP SKUs for lan8814
work together. It might be this patch is not required because of
changes in that patch?
Thanks
Andrew
The 10/21/2025 15:32, Andrew Lunn wrote:
Hi,
>
> On Tue, Oct 21, 2025 at 03:20:26PM +0200, Robert Marko wrote:
> > Currently, during the LAN8814 PTP probe shared->phydev is only set if PTP
> > clock gets actually set, otherwise the function will return before setting
> > it.
> >
> > This is an issue as shared->phydev is unconditionally being used when IRQ
> > is being handled, especially in lan8814_gpio_process_cap and since it was
> > not set it will cause a NULL pointer exception and crash the kernel.
> >
> > So, simply always set shared->phydev to avoid the NULL pointer exception.
> >
> > Fixes: b3f1a08fcf0d ("net: phy: micrel: Add support for PTP_PF_EXTTS for lan8814")
> > Signed-off-by: Robert Marko <robert.marko@sartura.hr>
>
> Please could you look at how this patch and
>
> [PATCH net-next v2] net: phy: micrel: Add support for non PTP SKUs for lan8814
>
> work together. It might be this patch is not required because of
> changes in that patch?
I managed to reproduce this issue also with the patch:
[PATCH net-next v2] net: phy: micrel: Add support for non PTP SKUs for lan8814
The way I reproduced the issue is by disabling the config PTP_1588_CLOCK
and then just set the port up to get an interrupt.
Then I try to apply this patch and then the issue was fixed.
Tested-by: Horatiu Vultur <horatiu.vultur@microchip.com>
>
> Thanks
> Andrew
--
/Horatiu
© 2016 - 2026 Red Hat, Inc.