Fix missing unlock in ipt action error path.
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2004/12/30 03:02:56+01:00 kaber@xxxxxxxxxxxx
# [PKT_SCHED]: Fix missing unlock in ipt action error path
#
# Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
#
# net/sched/ipt.c
# 2004/12/30 02:57:03+01:00 kaber@xxxxxxxxxxxx +6 -4
# [PKT_SCHED]: Fix missing unlock in ipt action error path
#
# Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
#
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
|