diff --git a/net/eth.c b/net/eth.c
index 1a11ce10277e591eee26acc493475514eba5b72b..bb4d95be8ec4800b17fdb454eda55b8ce6d9f21e 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -500,10 +500,7 @@ int eth_receive(void *packet, int length)
 			return -1;
 	}
 
-	if (length < eth_rcv_bufs[eth_rcv_current].length)
-		return -1;
-
-	length = eth_rcv_bufs[eth_rcv_current].length;
+	length = min(eth_rcv_bufs[eth_rcv_current].length, length);
 
 	for (i = 0; i < length; i++)
 		p[i] = eth_rcv_bufs[eth_rcv_current].data[i];