mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-23 09:42:19 +03:00
nvethernet: Harden while loops
Issue: Unsigned int variable in loop condition can be stuck forever if variable becomes uint_max-1 for unknown reason Fix: Add acceptable range condition check for loops Bug 2715343 Change-Id: I0c29d77fd3c2c7e03e3ff3492acea00b94e3319e Signed-off-by: Mahesh Patil <maheshp@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2244699 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
Revanth Kumar Uppala
parent
fa8c188668
commit
5176ea0aa5
@@ -121,10 +121,34 @@
|
||||
#define ETHER_DEFAULT_PLATFORM_MTU 1500U
|
||||
|
||||
/**
|
||||
* @brief Maximum buffer length per DMA descriptor (4KB).
|
||||
* @brief Maximum buffer length per DMA descriptor (16KB).
|
||||
*/
|
||||
#define ETHER_TX_MAX_BUFF_SIZE 0x3FFF
|
||||
|
||||
/**
|
||||
* @brief Maximum skb frame(GSO/TSO) size (64KB)
|
||||
*/
|
||||
#define ETHER_TX_MAX_FRAME_SIZE GSO_MAX_SIZE
|
||||
|
||||
/**
|
||||
* @brief Check if Tx data buffer length is within bounds.
|
||||
*
|
||||
* Algorithm: Check the data length if it is valid.
|
||||
*
|
||||
* @param[in] length: Tx data buffer length to check
|
||||
*
|
||||
* @retval true if length is valid
|
||||
* @retval false otherwise
|
||||
*/
|
||||
static inline bool valid_tx_len(unsigned int length)
|
||||
{
|
||||
if (length > 0U && length <= ETHER_TX_MAX_FRAME_SIZE) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Descriptors required for maximum contiguous TSO/GSO packet
|
||||
* one extra descriptor if there is linear buffer payload
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user