summaryrefslogtreecommitdiff
path: root/net/core
diff options
context:
space:
mode:
authorDavid S. Miller <davem@nuts.ninka.net>2002-06-07 09:46:22 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2002-06-07 09:46:22 -0700
commitd5e15dc8e8365baf78770bd3f97e6727c49de75f (patch)
tree0e6bf22b56718b93f1e00a44df9392a1354815af /net/core
parent5f6c1284fbb746d91c10191535a341238295974b (diff)
skbuff.c: Fix preempt fix lossage from acme cleanups.
Diffstat (limited to 'net/core')
-rw-r--r--net/core/skbuff.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 55c2c805ee71..74cbdeb53734 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -115,6 +115,7 @@ static __inline__ struct sk_buff *skb_head_from_pool(void)
unsigned long flags;
local_irq_save(flags);
+
list = &skb_head_pool[smp_processor_id()].list;
if (skb_queue_len(list))
@@ -130,13 +131,18 @@ static __inline__ void skb_head_to_pool(struct sk_buff *skb)
unsigned long flags;
local_irq_save(flags);
+
list = &skb_head_pool[smp_processor_id()].list;
if (skb_queue_len(list) < sysctl_hot_list_len) {
__skb_queue_head(list, skb);
local_irq_restore(flags);
+ return;
+ }
+
local_irq_restore(flags);
+ kmem_cache_free(skbuff_head_cache, skb);
}