mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-15 17:46:45 +07:00
Merge branch 'sfc-more-ARFS-fixes'
Edward Cree says: ==================== sfc: more ARFS fixes A couple more bits of breakage in my recent ARFS and async filters work. Patch #1 in particular fixes a bug that leads to memory trampling and consequent crashes. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
1d39fd1bed
@ -4784,8 +4784,9 @@ static bool efx_ef10_filter_rfs_expire_one(struct efx_nic *efx, u32 flow_id,
|
||||
* will set rule->filter_id to EFX_ARFS_FILTER_ID_PENDING, meaning that
|
||||
* the rule is not removed by efx_rps_hash_del() below.
|
||||
*/
|
||||
ret = efx_ef10_filter_remove_internal(efx, 1U << spec->priority,
|
||||
filter_idx, true) == 0;
|
||||
if (ret)
|
||||
ret = efx_ef10_filter_remove_internal(efx, 1U << spec->priority,
|
||||
filter_idx, true) == 0;
|
||||
/* While we can't safely dereference rule (we dropped the lock), we can
|
||||
* still test it for NULL.
|
||||
*/
|
||||
|
@ -839,6 +839,8 @@ static void efx_filter_rfs_work(struct work_struct *data)
|
||||
int rc;
|
||||
|
||||
rc = efx->type->filter_insert(efx, &req->spec, true);
|
||||
if (rc >= 0)
|
||||
rc %= efx->type->max_rx_ip_filters;
|
||||
if (efx->rps_hash_table) {
|
||||
spin_lock_bh(&efx->rps_hash_lock);
|
||||
rule = efx_rps_hash_find(efx, &req->spec);
|
||||
|
Loading…
Reference in New Issue
Block a user