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:
parent
343166a084
commit
54c1e9cdee
1 changed files with 3 additions and 1 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue