diff options
| -rw-r--r-- | net/ipv4/netfilter/ipt_hashlimit.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/net/ipv4/netfilter/ipt_hashlimit.c b/net/ipv4/netfilter/ipt_hashlimit.c index 6b662449e825..3bd2368e1fc9 100644 --- a/net/ipv4/netfilter/ipt_hashlimit.c +++ b/net/ipv4/netfilter/ipt_hashlimit.c | |||
| @@ -454,15 +454,12 @@ hashlimit_match(const struct sk_buff *skb, | |||
| 454 | dh->rateinfo.credit_cap = user2credits(hinfo->cfg.avg * | 454 | dh->rateinfo.credit_cap = user2credits(hinfo->cfg.avg * |
| 455 | hinfo->cfg.burst); | 455 | hinfo->cfg.burst); |
| 456 | dh->rateinfo.cost = user2credits(hinfo->cfg.avg); | 456 | dh->rateinfo.cost = user2credits(hinfo->cfg.avg); |
| 457 | 457 | } else { | |
| 458 | spin_unlock_bh(&hinfo->lock); | 458 | /* update expiration timeout */ |
| 459 | return 1; | 459 | dh->expires = now + msecs_to_jiffies(hinfo->cfg.expire); |
| 460 | rateinfo_recalc(dh, now); | ||
| 460 | } | 461 | } |
| 461 | 462 | ||
| 462 | /* update expiration timeout */ | ||
| 463 | dh->expires = now + msecs_to_jiffies(hinfo->cfg.expire); | ||
| 464 | |||
| 465 | rateinfo_recalc(dh, now); | ||
| 466 | if (dh->rateinfo.credit >= dh->rateinfo.cost) { | 463 | if (dh->rateinfo.credit >= dh->rateinfo.cost) { |
| 467 | /* We're underlimit. */ | 464 | /* We're underlimit. */ |
| 468 | dh->rateinfo.credit -= dh->rateinfo.cost; | 465 | dh->rateinfo.credit -= dh->rateinfo.cost; |
