for (;;) {
ssize_t retval = recv(netdev->fd, data, size, MSG_TRUNC);
- if (retval > size) {
- /* Received packet was longer than supplied buffer. */
- return -EMSGSIZE;
- } else if (retval >= 0) {
- return retval;
+ if (retval >= 0) {
+ return retval <= size ? retval : -EMSGSIZE;
} else if (errno != EINTR) {
if (errno != EAGAIN) {
VLOG_WARN_RL(&rl, "error receiving Ethernet packet on %s: %s",