i82596: Adding proper break-statement functionality in RX functions

Fix coverty reported logic error CID 1642873.
The initial issue was the break statement exited out of the for loop
unconditionally.
Now, the break only happens if rfd is null, out_of_resources or
bytes_copied < payload_size.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Soumyajyotii Ssarkar <soumyajyotisarkar23@gmail.com>
Reviewed-by: Helge Deller <deller@gmx.de>
Signed-off-by: Helge Deller <deller@gmx.de>
This commit is contained in:
Soumyajyotii Ssarkar 2025-11-06 21:06:24 +05:30 committed by Helge Deller
parent 343166a084
commit 54c1e9cdee

View file

@ -1092,6 +1092,7 @@ static ssize_t i82596_receive_packet(I82596State *s, const uint8_t *buf,
rx_status |= RFD_STATUS_TRUNC | RFD_STATUS_NOBUFS;
i82596_record_error(s, RFD_STATUS_NOBUFS, false);
packet_completed = true;
break;
} else {
hwaddr remaining_rbd = I596_NULL;
size_t rbd_bytes = i82596_rx_copy_to_rbds(
@ -1118,17 +1119,18 @@ static ssize_t i82596_receive_packet(I82596State *s, const uint8_t *buf,
i82596_record_error(s, RFD_STATUS_NOBUFS, false);
rx_status |= RFD_STATUS_TRUNC | RFD_STATUS_NOBUFS;
packet_completed = true;
break;
}
if (bytes_copied < payload_size) {
trace_i82596_rx_incomplete(bytes_copied, payload_size);
rx_status |= RFD_STATUS_TRUNC;
packet_completed = true;
break;
}
}
}
}
break;
} while (bytes_copied < payload_size);