r8169: de-obfuscate modulo arithmetic
authorFrancois Romieu <romieu@fr.zoreil.com>
Sat, 16 Jun 2007 21:28:45 +0000 (23:28 +0200)
committerJeff Garzik <jeff@garzik.org>
Mon, 9 Jul 2007 02:16:43 +0000 (22:16 -0400)
The former style suggests a modulo arithmetic misuse but
the expression should never be < 0. Even if it does, the
driver will simply loop longer than expected (not that
the remaining parts of the system will necessarily
appreciate it...).

Let's warn the user when something goes wrong and try
to go over it.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Edward Hsu <edward_hsu@realtek.com.tw>
drivers/net/r8169.c

index 45864461aab63632acdd0016a56b7e145c54044a..1f7fb541ec54ef3bb605d352fda2901d33523dc1 100644 (file)
@@ -2040,10 +2040,12 @@ static u32 rtl8169_rx_fill(struct rtl8169_private *tp, struct net_device *dev,
 {
        u32 cur;
 
-       for (cur = start; end - cur > 0; cur++) {
+       for (cur = start; end - cur != 0; cur++) {
                struct sk_buff *skb;
                unsigned int i = cur % NUM_RX_DESC;
 
+               WARN_ON((s32)(end - cur) < 0);
+
                if (tp->Rx_skbuff[i])
                        continue;