]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 7 Mar 2018 17:35:47 +0000 (09:35 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 7 Mar 2018 17:35:47 +0000 (09:35 -0800)
added patches:
net-fec-introduce-fec_ptp_stop-and-use-in-probe-fail-path.patch

queue-3.18/net-fec-introduce-fec_ptp_stop-and-use-in-probe-fail-path.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/net-fec-introduce-fec_ptp_stop-and-use-in-probe-fail-path.patch b/queue-3.18/net-fec-introduce-fec_ptp_stop-and-use-in-probe-fail-path.patch
new file mode 100644 (file)
index 0000000..58f1206
--- /dev/null
@@ -0,0 +1,83 @@
+From 32cba57ba74be58589aeb4cb6496183e46a5e3e5 Mon Sep 17 00:00:00 2001
+From: Lucas Stach <l.stach@pengutronix.de>
+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 <l.stach@pengutronix.de>
+
+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.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+Acked-by: Fugang Duan <B38611@freescale.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+[groeck: backport: context changes in .../fec_main.c]
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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(-)
+
+--- a/drivers/net/ethernet/freescale/fec.h
++++ b/drivers/net/ethernet/freescale/fec.h
+@@ -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);
+--- a/drivers/net/ethernet/freescale/fec_main.c
++++ b/drivers/net/ethernet/freescale/fec_main.c
+@@ -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 *p
+       struct 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);
+--- a/drivers/net/ethernet/freescale/fec_ptp.c
++++ b/drivers/net/ethernet/freescale/fec_ptp.c
+@@ -620,6 +620,16 @@ void fec_ptp_init(struct platform_device
+       schedule_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
index 0621e67c771cad5ee40d63e8a9a525fe6d4719c3..66cd6bd49f948a202ca96c4ff1f6b6c9b7dc4786 100644 (file)
@@ -4,3 +4,4 @@ alsa-usb-audio-add-a-quirck-for-b-w-px-headphones.patch
 cpufreq-s3c24xx-fix-broken-s3c_cpufreq_init.patch
 arm-mvebu-fix-broken-pl310_errata_753970-selects.patch
 kvm-x86-fix-smram-accessing-even-if-vm-is-shutdown.patch
+net-fec-introduce-fec_ptp_stop-and-use-in-probe-fail-path.patch