lantiq: properly release descriptors in etop driver detach
authorAleksander Jan Bajkowski <olek2@wp.pl>
Sat, 13 Jul 2024 10:11:34 +0000 (12:11 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 21 Jul 2024 12:07:26 +0000 (14:07 +0200)
This patch fixes two issues in the driver detach:
* double free of the same descriptor (upstream bug, backported in 66177c081f1b05e4eb7f6c23d97954e8172c4336),
* releasing tx descriptor instead of rx (downstream bug).

The driver is compiled into the kernel that is why the error
is not visible in normal use.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/15939
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/lantiq/patches-6.6/0028-NET-lantiq-various-etop-fixes.patch

index ea3ba66e10f815bef8d52376575661f5e58340fe..f5b6a0347b86ca3c1ccc7614327418fa0acf7f9f 100644 (file)
@@ -5,8 +5,8 @@ Subject: [PATCH 28/36] NET: lantiq: various etop fixes
 
 Signed-off-by: John Crispin <blogic@openwrt.org>
 ---
- drivers/net/ethernet/lantiq_etop.c |  555 +++++++++++++++++++++++++-----------
- 1 file changed, 389 insertions(+), 166 deletions(-)
+ drivers/net/ethernet/lantiq_etop.c | 531 ++++++++++++++++++++---------
+ 1 file changed, 374 insertions(+), 157 deletions(-)
 
 --- a/drivers/net/ethernet/lantiq_etop.c
 +++ b/drivers/net/ethernet/lantiq_etop.c
@@ -275,7 +275,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
        if (ch->dma.irq)
                free_irq(ch->dma.irq, priv);
 -      if (IS_RX(ch->idx)) {
-+      if (ch == &priv->txch) {
++      if (ch == &priv->rxch) {
                struct ltq_dma_channel *dma = &ch->dma;
  
                for (dma->desc = 0; dma->desc < LTQ_DESC_NUM; dma->desc++)