netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814
@ 2025-10-21 13:20 Robert Marko
  2025-10-21 13:32 ` Andrew Lunn
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Robert Marko @ 2025-10-21 13:20 UTC (permalink / raw)
  To: daniel.machon, andrew, hkallweit1, linux, davem, edumazet, kuba,
	pabeni, vadim.fedorenko, horatiu.vultur, netdev, linux-kernel
  Cc: luka.perkov, Robert Marko

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


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814
  2025-10-21 13:20 [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814 Robert Marko
@ 2025-10-21 13:32 ` Andrew Lunn
  2025-10-22  7:19   ` Horatiu Vultur
  2025-10-23 14:12 ` Jakub Kicinski
  2025-10-23 14:30 ` patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Andrew Lunn @ 2025-10-21 13:32 UTC (permalink / raw)
  To: Robert Marko
  Cc: daniel.machon, hkallweit1, linux, davem, edumazet, kuba, pabeni,
	vadim.fedorenko, horatiu.vultur, netdev, linux-kernel,
	luka.perkov

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814
  2025-10-21 13:32 ` Andrew Lunn
@ 2025-10-22  7:19   ` Horatiu Vultur
  0 siblings, 0 replies; 6+ messages in thread
From: Horatiu Vultur @ 2025-10-22  7:19 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Robert Marko, daniel.machon, hkallweit1, linux, davem, edumazet,
	kuba, pabeni, vadim.fedorenko, netdev, linux-kernel, luka.perkov

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814
  2025-10-21 13:20 [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814 Robert Marko
  2025-10-21 13:32 ` Andrew Lunn
@ 2025-10-23 14:12 ` Jakub Kicinski
  2025-10-23 14:16   ` Robert Marko
  2025-10-23 14:30 ` patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Jakub Kicinski @ 2025-10-23 14:12 UTC (permalink / raw)
  To: Robert Marko
  Cc: daniel.machon, andrew, hkallweit1, linux, davem, edumazet, pabeni,
	vadim.fedorenko, horatiu.vultur, netdev, linux-kernel,
	luka.perkov

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..

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814
  2025-10-23 14:12 ` Jakub Kicinski
@ 2025-10-23 14:16   ` Robert Marko
  0 siblings, 0 replies; 6+ messages in thread
From: Robert Marko @ 2025-10-23 14:16 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: daniel.machon, andrew, hkallweit1, linux, davem, edumazet, pabeni,
	vadim.fedorenko, horatiu.vultur, netdev, linux-kernel,
	luka.perkov

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814
  2025-10-21 13:20 [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814 Robert Marko
  2025-10-21 13:32 ` Andrew Lunn
  2025-10-23 14:12 ` Jakub Kicinski
@ 2025-10-23 14:30 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-10-23 14:30 UTC (permalink / raw)
  To: Robert Marko
  Cc: daniel.machon, andrew, hkallweit1, linux, davem, edumazet, kuba,
	pabeni, vadim.fedorenko, horatiu.vultur, netdev, linux-kernel,
	luka.perkov

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 21 Oct 2025 15:20:26 +0200 you 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.
> 
> [...]

Here is the summary with links:
  - [net] net: phy: micrel: always set shared->phydev for LAN8814
    https://git.kernel.org/netdev/net/c/399d10934740

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-10-23 14:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-21 13:20 [PATCH net] net: phy: micrel: always set shared->phydev for LAN8814 Robert Marko
2025-10-21 13:32 ` Andrew Lunn
2025-10-22  7:19   ` Horatiu Vultur
2025-10-23 14:12 ` Jakub Kicinski
2025-10-23 14:16   ` Robert Marko
2025-10-23 14:30 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).