]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Oct 2023 17:04:52 +0000 (19:04 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Oct 2023 17:04:52 +0000 (19:04 +0200)
added patches:
ravb-fix-use-after-free-issue-in-ravb_tx_timeout_work.patch

queue-5.10/ravb-fix-use-after-free-issue-in-ravb_tx_timeout_work.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/ravb-fix-use-after-free-issue-in-ravb_tx_timeout_work.patch b/queue-5.10/ravb-fix-use-after-free-issue-in-ravb_tx_timeout_work.patch
new file mode 100644 (file)
index 0000000..476c874
--- /dev/null
@@ -0,0 +1,50 @@
+From 3971442870713de527684398416970cf025b4f89 Mon Sep 17 00:00:00 2001
+From: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
+Date: Thu, 5 Oct 2023 10:12:01 +0900
+Subject: ravb: Fix use-after-free issue in ravb_tx_timeout_work()
+
+From: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
+
+commit 3971442870713de527684398416970cf025b4f89 upstream.
+
+The ravb_stop() should call cancel_work_sync(). Otherwise,
+ravb_tx_timeout_work() is possible to use the freed priv after
+ravb_remove() was called like below:
+
+CPU0                   CPU1
+                       ravb_tx_timeout()
+ravb_remove()
+unregister_netdev()
+free_netdev(ndev)
+// free priv
+                       ravb_tx_timeout_work()
+                       // use priv
+
+unregister_netdev() will call .ndo_stop() so that ravb_stop() is
+called. And, after phy_stop() is called, netif_carrier_off()
+is also called. So that .ndo_tx_timeout() will not be called
+after phy_stop().
+
+Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper")
+Reported-by: Zheng Wang <zyytlz.wz@163.com>
+Closes: https://lore.kernel.org/netdev/20230725030026.1664873-1-zyytlz.wz@163.com/
+Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
+Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
+Link: https://lore.kernel.org/r/20231005011201.14368-3-yoshihiro.shimoda.uh@renesas.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/renesas/ravb_main.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/ethernet/renesas/ravb_main.c
++++ b/drivers/net/ethernet/renesas/ravb_main.c
+@@ -1706,6 +1706,8 @@ static int ravb_close(struct net_device
+                       of_phy_deregister_fixed_link(np);
+       }
++      cancel_work_sync(&priv->work);
++
+       if (priv->chip_id != RCAR_GEN2) {
+               free_irq(priv->tx_irqs[RAVB_NC], ndev);
+               free_irq(priv->rx_irqs[RAVB_NC], ndev);
index b319fa5a3097da6c1cd105a24e78ee33475a0684..bcc6eb9c56ab731970a7062ff33a80dbf56fa372 100644 (file)
@@ -80,3 +80,4 @@ arm64-armv8_deprecated-fix-unused-function-error.patch
 eth-remove-remaining-copies-of-the-napi_poll_weight-define.patch
 rdma-srp-set-scmnd-result-only-when-scmnd-is-not-null.patch
 rdma-srp-fix-srp_abort.patch
+ravb-fix-use-after-free-issue-in-ravb_tx_timeout_work.patch