From 7fcbbe7dee2dd177f4635c651a6f442aed37415d Mon Sep 17 00:00:00 2001 From: Sam Liddicott Date: Tue, 7 Jan 2014 09:11:07 -0800 Subject: [PATCH] xt_quota2: fix 2 bugs when not in grow mode Cherry-pick commit v2.3-5-gc6c70ab. 1. XT_QUOTA_NO_CHANGE should not alter quota to zero ever 2. XT_QUOTA_PACKET should not be set to zero based on skb->len Signed-off-by: Sam Liddicott --- extensions/xt_quota2.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/xt_quota2.c b/extensions/xt_quota2.c index 143e5ab..eca09e9 100644 --- a/extensions/xt_quota2.c +++ b/extensions/xt_quota2.c @@ -209,13 +209,14 @@ quota_mt2(const struct sk_buff *skb, struct xt_action_param *par) } ret = true; } else { - if (e->quota >= skb->len) { + if (e->quota >= ((q->flags & XT_QUOTA_PACKET) ? 1 : skb->len)) { if (!(q->flags & XT_QUOTA_NO_CHANGE)) e->quota -= (q->flags & XT_QUOTA_PACKET) ? 1 : skb->len; ret = !ret; } else { /* we do not allow even small packets from now on */ - e->quota = 0; + if (!(q->flags & XT_QUOTA_NO_CHANGE)) + e->quota = 0; } q->quota = e->quota; }