From 54c1e9cdeee71b84f1e78d01f3e083cf5158bd08 Mon Sep 17 00:00:00 2001 From: Soumyajyotii Ssarkar Date: Thu, 6 Nov 2025 21:06:24 +0530 Subject: [PATCH] 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 Signed-off-by: Soumyajyotii Ssarkar Reviewed-by: Helge Deller Signed-off-by: Helge Deller --- hw/net/i82596.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/net/i82596.c b/hw/net/i82596.c index fb6b54fd71..af1abd4996 100644 --- a/hw/net/i82596.c +++ b/hw/net/i82596.c @@ -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); -- 2.47.3