aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/r8169.c
diff options
context:
space:
mode:
authorFrancois Romieu <romieu@fr.zoreil.com>2007-06-16 17:28:45 -0400
committerJeff Garzik <jeff@garzik.org>2007-07-08 22:16:43 -0400
commit4ae47c2ddc55e3c571bb55fca921cfe9b02a685f (patch)
treeab36ce4084f19e952ac2e14d27df857a6366adb5 /drivers/net/r8169.c
parent15d317587e17dcb96484e46b17b6e826a1f97661 (diff)
r8169: de-obfuscate modulo arithmetic
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>
Diffstat (limited to 'drivers/net/r8169.c')
-rw-r--r--drivers/net/r8169.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 45864461aab6..1f7fb541ec54 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -2040,10 +2040,12 @@ static u32 rtl8169_rx_fill(struct rtl8169_private *tp, struct net_device *dev,
2040{ 2040{
2041 u32 cur; 2041 u32 cur;
2042 2042
2043 for (cur = start; end - cur > 0; cur++) { 2043 for (cur = start; end - cur != 0; cur++) {
2044 struct sk_buff *skb; 2044 struct sk_buff *skb;
2045 unsigned int i = cur % NUM_RX_DESC; 2045 unsigned int i = cur % NUM_RX_DESC;
2046 2046
2047 WARN_ON((s32)(end - cur) < 0);
2048
2047 if (tp->Rx_skbuff[i]) 2049 if (tp->Rx_skbuff[i])
2048 continue; 2050 continue;
2049 2051