# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/12/30 03:02:56+01:00 kaber@coreworks.de # [PKT_SCHED]: Fix missing unlock in ipt action error path # # Signed-off-by: Patrick McHardy # # net/sched/ipt.c # 2004/12/30 02:57:03+01:00 kaber@coreworks.de +6 -4 # [PKT_SCHED]: Fix missing unlock in ipt action error path # # Signed-off-by: Patrick McHardy # diff -Nru a/net/sched/ipt.c b/net/sched/ipt.c --- a/net/sched/ipt.c 2004-12-30 04:01:46 +01:00 +++ b/net/sched/ipt.c 2004-12-30 04:01:46 +01:00 @@ -248,9 +248,11 @@ p->bstats.bytes += skb->len; p->bstats.packets++; - if (skb_cloned(skb) ) { - if (pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) - return -1; + if (skb_cloned(skb)) { + if (unlikely(pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) { + result = -1; + goto out_unlock; + } } /* yes, we have to worry about both in and out dev worry later - danger - this API seems to have changed @@ -275,9 +277,9 @@ result = TC_POLICE_OK; break; } +out_unlock: spin_unlock(&p->lock); return result; - } static int