aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois Romieu <romieu@fr.zoreil.com>2007-06-16 23:28:45 +0200
committerJeff Garzik <jeff@garzik.org>2007-07-08 22:16:43 -0400
commit4ae47c2ddc55e3c571bb55fca921cfe9b02a685f (patch)
treeab36ce4084f19e952ac2e14d27df857a6366adb5
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>
-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 45864461aab..1f7fb541ec5 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,
{
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;