cfg80211: fix crash in cfg80211_set_freq()
[safe/jmp/linux-2.6] / net / netfilter / xt_quota.c
index 01dd07b..b4f7dfe 100644 (file)
@@ -4,6 +4,7 @@
  * Sam Johnston <samj@samj.net>
  */
 #include <linux/skbuff.h>
+#include <linux/slab.h>
 #include <linux/spinlock.h>
 
 #include <linux/netfilter/x_tables.h>
@@ -22,7 +23,7 @@ MODULE_ALIAS("ip6t_quota");
 static DEFINE_SPINLOCK(quota_lock);
 
 static bool
-quota_mt(const struct sk_buff *skb, const struct xt_match_param *par)
+quota_mt(const struct sk_buff *skb, struct xt_action_param *par)
 {
        struct xt_quota_info *q = (void *)par->matchinfo;
        struct xt_quota_priv *priv = q->master;
@@ -43,18 +44,19 @@ quota_mt(const struct sk_buff *skb, const struct xt_match_param *par)
        return ret;
 }
 
-static bool quota_mt_check(const struct xt_mtchk_param *par)
+static int quota_mt_check(const struct xt_mtchk_param *par)
 {
        struct xt_quota_info *q = par->matchinfo;
 
        if (q->flags & ~XT_QUOTA_MASK)
-               return false;
+               return -EINVAL;
 
        q->master = kmalloc(sizeof(*q->master), GFP_KERNEL);
        if (q->master == NULL)
                return -ENOMEM;
 
-       return true;
+       q->master->quota = q->quota;
+       return 0;
 }
 
 static void quota_mt_destroy(const struct xt_mtdtor_param *par)