Add an extra check to be sure we never process the self-linked rx descriptor at
the end of the list. This should not happen since in this case the RXDP should
also point at the same descriptor and the previous check should catch that. But
we don't trust RXDP completely (might it be NULL or undefined at some times?),
so it's better to add an extra check.

Signed-off-by: Bruno Randolf <b...@einfach.org>
---
 drivers/net/wireless/ath/ath5k/base.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ath/ath5k/base.c 
b/drivers/net/wireless/ath/ath5k/base.c
index 7e14eb6..50d071c 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1933,6 +1933,10 @@ ath5k_tasklet_rx(unsigned long data)
                if (ath5k_hw_get_rxdp(sc->ah) == bf->daddr)
                        break;
 
+               /* never process the self-linked entry at the end */
+               if (ds->ds_link == bf->daddr)
+                       break;
+
                ret = sc->ah->ah_proc_rx_desc(sc->ah, ds, &rs);
                if (unlikely(ret == -EINPROGRESS))
                        break;

_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to