mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
net/mlx5: Move command entry freeing outside of spinlock
Move the kfree() call outside the critical section to reduce lock holding time. This aligns with the general principle of minimizing work under locks. Signed-off-by: Li RongQing <lirongqing@baidu.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260331122604.1933-1-lirongqing@baidu.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
4cbcf82e26
commit
2897c697b3
|
|
@ -196,17 +196,18 @@ static void cmd_ent_put(struct mlx5_cmd_work_ent *ent)
|
|||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&cmd->alloc_lock, flags);
|
||||
if (!refcount_dec_and_test(&ent->refcnt))
|
||||
goto out;
|
||||
if (!refcount_dec_and_test(&ent->refcnt)) {
|
||||
spin_unlock_irqrestore(&cmd->alloc_lock, flags);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ent->idx >= 0) {
|
||||
cmd_free_index(cmd, ent->idx);
|
||||
up(ent->page_queue ? &cmd->vars.pages_sem : &cmd->vars.sem);
|
||||
}
|
||||
spin_unlock_irqrestore(&cmd->alloc_lock, flags);
|
||||
|
||||
cmd_free_ent(ent);
|
||||
out:
|
||||
spin_unlock_irqrestore(&cmd->alloc_lock, flags);
|
||||
}
|
||||
|
||||
static struct mlx5_cmd_layout *get_inst(struct mlx5_cmd *cmd, int idx)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user