net: ar8216: sync mib_work cancellation
authorPavel Kubelun <be.dissent@gmail.com>
Mon, 28 Nov 2016 11:58:39 +0000 (14:58 +0300)
committerJohn Crispin <john@phrozen.org>
Thu, 1 Dec 2016 14:47:43 +0000 (15:47 +0100)
Import from https://chromium.googlesource.com/chromiumos/third_party/kernel/+/c05af20272059e149e2da2e1fa1fbd90c03ec979
Signed-off-by: Pavel Kubelun <be.dissent@gmail.com>
CHROMIUM: drivers: ar8216: sync mib_work cancellation

ar8xxx_mib_stop() is called from ar8xxx_phy_remove(), so we want to make
sure the work doesn't run after priv is freed / the device ceases to
exist.

BUG=chrome-os-partner:33096
TEST=none

Change-Id: Iafb44ce93a87433adc4576e5fea5fda58d1f43a9
Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
Reviewed-on: https://chromium-review.googlesource.com/232827
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Toshi Kikuchi <toshik@chromium.org>
Reviewed-by: Grant Grundler <grundler@chromium.org>
Tested-by: Toshi Kikuchi <toshik@chromium.org>
target/linux/generic/files/drivers/net/phy/ar8216.c

index cd5fbac86e26397326db27432cc4c3d09af954ee..7398d7e273765c317079c6002f28573eea5d97bc 100644 (file)
@@ -1889,7 +1889,7 @@ ar8xxx_mib_stop(struct ar8xxx_priv *priv)
        if (!ar8xxx_has_mib_counters(priv))
                return;
 
-       cancel_delayed_work(&priv->mib_work);
+       cancel_delayed_work_sync(&priv->mib_work);
 }
 
 static struct ar8xxx_priv *