On 4/11/24 2:44 PM, Paul Barker wrote: > The RX loops in ravb_rx_gbeth() and ravb_rx_rcar() skip to the next loop > interation if a zero-length descriptor is seen (indicating a DMA mapping Iteration. :-) > error). However, the current rx descriptor index `priv->cur_rx[q]` was RX? > incremented at the end of the loop and so would not be incremented when > we skip to the next loop iteration. This would cause the loop to keep > seeing the same zero-length descriptor instead of moving on to the next > descriptor. > > As the loop counter `i` still increments, the loop would eventually > terminate so there is no risk of being stuck here forever - but we > should still fix this to avoid wasting cycles. > > To fix this, the rx descriptor index is incremented at the top of the RX? > loop, in the for statement itself. The assignments of `entry` and `desc` > are brought into the loop to avoid the need for duplication. > > Fixes: d8b48911fd24 ("ravb: fix ring memory allocation") > Signed-off-by: Paul Barker <paul.barker.ct@xxxxxxxxxxxxxx> Reviewed-by: Sergey Shtylyov <s.shtylyov@xxxxxx> [...] MBR, Sergey