diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 45864461aab63632acdd0016a56b7e145c54044a..1f7fb541ec54ef3bb605d352fda2901d33523dc1 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;