sfc: fix ef100 design-param checking
The handling of the RXQ/TXQ size granularity design-params had two problems: it had a 64-bit divide that didn't build on 32-bit platforms, and it could divide by zero if the NIC supplied 0 as the value of the design-param. Fix both by checking for 0 and for a granularity bigger than our min-size; if the granularity <= EFX_MIN_DMAQ_SIZE then it fits in 32 bits, so we can cast it to u32 for the divide. Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Edward Cree <ecree@solarflare.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
633f5b6bca
Коммит
41077c9902
|
@ -979,7 +979,8 @@ static int ef100_process_design_param(struct efx_nic *efx,
|
|||
* EFX_MIN_DMAQ_SIZE is divisible by GRANULARITY.
|
||||
* This is very unlikely to fail.
|
||||
*/
|
||||
if (EFX_MIN_DMAQ_SIZE % reader->value) {
|
||||
if (!reader->value || reader->value > EFX_MIN_DMAQ_SIZE ||
|
||||
EFX_MIN_DMAQ_SIZE % (u32)reader->value) {
|
||||
netif_err(efx, probe, efx->net_dev,
|
||||
"%s size granularity is %llu, can't guarantee safety\n",
|
||||
reader->type == ESE_EF100_DP_GZ_RXQ_SIZE_GRANULARITY ? "RXQ" : "TXQ",
|
||||
|
|
Загрузка…
Ссылка в новой задаче