aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Chapman <jchapman@katalix.com>2007-04-30 00:07:31 -0700
committerDavid S. Miller <davem@davemloft.net>2007-04-30 00:07:31 -0700
commit46f8914e53c28d0716c586e08a7c819d8ebb9d54 (patch)
tree722beec8d5a83d6c13b455e69ab567197e065c55
parent[AF_IUCV/IUCV]: smp_call_function deadlock (diff)
downloadlinux-dev-46f8914e53c28d0716c586e08a7c819d8ebb9d54.tar.xz
linux-dev-46f8914e53c28d0716c586e08a7c819d8ebb9d54.zip
[SKB]: Introduce skb_queue_walk_safe()
This patch provides a method for walking skb lists while inserting or removing skbs from the list. Signed-off-by: James Chapman <jchapman@katalix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/linux/skbuff.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 2694cb3ca763..253a2b9be9d6 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1471,6 +1471,11 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
prefetch(skb->next), (skb != (struct sk_buff *)(queue)); \
skb = skb->next)
+#define skb_queue_walk_safe(queue, skb, tmp) \
+ for (skb = (queue)->next, tmp = skb->next; \
+ skb != (struct sk_buff *)(queue); \
+ skb = tmp, tmp = skb->next)
+
#define skb_queue_reverse_walk(queue, skb) \
for (skb = (queue)->prev; \
prefetch(skb->prev), (skb != (struct sk_buff *)(queue)); \