Patch "net: fec: introduce fec_ptp_stop and use in probe fail path" has been added to the 3.18-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
net: fec: introduce fec_ptp_stop and use in probe fail path
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-fec-introduce-fec_ptp_stop-and-use-in-probe-fail-path.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
32cba57ba74be58589aeb4cb6496183e46a5e3e5Mon Sep 17 00:00:00 2001
From: Lucas Stach <[email protected]>
Date: Thu, 23 Jul 2015 16:06:20 +0200
Subject: net: fec: introduce fec_ptp_stop and use in probe fail path
From: Lucas Stach <[email protected]>
commit 32cba57ba74be58589aeb4cb6496183e46a5e3e5 upstream.
This function frees resources and cancels delayed work item that have been initialized in fec_ptp_init().
Use this to do proper error handling if something goes wrong in probe function after fec_ptp_init has been called.
--- drivers/net/ethernet/freescale/fec.h | 1 + drivers/net/ethernet/freescale/fec_main.c | 5 ++--- drivers/net/ethernet/freescale/fec_ptp.c | 10 ++++++++++ 3 files changed, 13 insertions(+), 3 deletions(-)
drivers/net/ethernet/freescale/fec.h +1 -0
@@ -546,6 +546,7 @@ struct fec_enet_private { };void fec_ptp_init (struct platform_device *pdev); +void fec_ptp_stop (struct platform_device *pdev);void fec_ptp_start_cyclecounter (struct net_device *ndev);int fec_ptp_set (struct net_device *ndev,struct ifreq *ifr);int fec_ptp_get (struct net_device *ndev,struct ifreq *ifr);
drivers/net/ethernet/freescale/fec_main.c +2 -3
@@ -3312,6 +3312,7 @@ failed_register: failed_mii_init: failed_irq: failed_init: +fec_ptp_stop (pdev);if (fep->reg_phy)regulator_disable (fep->reg_phy); failed_regulator:
@@ -3331,14 +3332,12 @@ fec_drv_remove(struct platform_device *pstruct net_device *ndev =platform_get_drvdata (pdev);struct fec_enet_private *fep =netdev_priv (ndev); -cancel_delayed_work_sync (&fep->time_keep);cancel_work_sync (&fep->tx_timeout_work); +fec_ptp_stop (pdev);unregister_netdev (ndev);fec_enet_mii_remove (fep);if (fep->reg_phy)regulator_disable (fep->reg_phy); -if (fep->ptp_clock) -ptp_clock_unregister (fep->ptp_clock);fec_enet_clk_enable (ndev, false);of_node_put (fep->phy_node);free_netdev (ndev);
drivers/net/ethernet/freescale/fec_ptp.c +10 -0
@@ -620,6 +620,16 @@ void fec_ptp_init(struct platform_deviceschedule_delayed_work (&fep->time_keep,HZ ); } +void fec_ptp_stop (struct platform_device *pdev) +{ +struct net_device *ndev =platform_get_drvdata (pdev); +struct fec_enet_private *fep =netdev_priv (ndev); + +cancel_delayed_work_sync (&fep->time_keep); +if (fep->ptp_clock) +ptp_clock_unregister (fep->ptp_clock); +} +/** * fec_ptp_check_pps_event * @fep: the fec_enet_private structure handle
Patches currently in stable-queue which might be from [email protected] are
queue-3.18/net-fec-introduce-fec_ptp_stop-and-use-in-probe-fail-path.patch