Messages in this thread | | | Date | Thu, 18 Aug 2022 09:32:24 -0700 | From | Jakub Kicinski <> | Subject | Re: [PATCH -next] net: neigh: use dev_kfree_skb_irq instead of kfree_skb() |
| |
Please put [PATCH net] as the tag for v2, this is a fix, not -next material.
On Thu, 18 Aug 2022 11:00:13 +0200 Denis V. Lunev wrote: > unsigned long flags; > struct sk_buff *skb; > + struct sk_buff_head tmp;
reverse xmas tree, so tmp should be declared before the shorter lines
> + skb_queue_head_init(&tmp); > > spin_lock_irqsave(&list->lock, flags); > skb = skb_peek(list); > @@ -318,12 +321,16 @@ static void pneigh_queue_purge(struct sk_buff_head > *list, struct net *net) > struct sk_buff *skb_next = skb_peek_next(skb, list);
while at it let's add an empty line here
> if (net == NULL || net == dev_net(skb->dev)) { > __skb_unlink(skb, list); > - dev_put(skb->dev); > - kfree_skb(skb); > + __skb_queue_tail(&tmp, skb); > } > skb = skb_next; > } while (skb != NULL); > spin_unlock_irqrestore(&list->lock, flags); > + > + while ((skb = __skb_dequeue(&tmp)) != NULL) {
No need to compare pointers to NULL
> + dev_put(skb->dev); > + kfree_skb(skb); > + }
| |