net: do not provide hard irq safety for sd->defer_lock

kfree_skb() can be called from hard irq handlers,
but skb_attempt_defer_free() is meant to be used
from process or BH contexts, and skb_defer_free_flush()
is meant to be called from BH contexts.

Not having to mask hard irq can save some cycles.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet
2023-04-21 09:43:54 +00:00
committed by David S. Miller
parent e8e1ce8454
commit 931e93bdf8
2 changed files with 4 additions and 5 deletions

View File

@@ -6632,11 +6632,11 @@ static void skb_defer_free_flush(struct softnet_data *sd)
if (!READ_ONCE(sd->defer_list))
return;
spin_lock_irq(&sd->defer_lock);
spin_lock(&sd->defer_lock);
skb = sd->defer_list;
sd->defer_list = NULL;
sd->defer_count = 0;
spin_unlock_irq(&sd->defer_lock);
spin_unlock(&sd->defer_lock);
while (skb != NULL) {
next = skb->next;