drm: only trust core drm ioctls - driver ioctls are a mess.
[safe/jmp/linux-2.6] / net / netfilter / xt_hashlimit.c
index dc29007..6809af5 100644 (file)
@@ -237,15 +237,15 @@ static int htable_create_v0(struct xt_hashlimit_info *minfo, int family)
        hinfo->family = family;
        hinfo->rnd_initialized = 0;
        spin_lock_init(&hinfo->lock);
-       hinfo->pde = proc_create(minfo->name, 0,
+       hinfo->pde =
+               proc_create_data(minfo->name, 0,
                                 family == AF_INET ? hashlimit_procdir4 :
                                                     hashlimit_procdir6,
-                                &dl_file_ops);
+                                &dl_file_ops, hinfo);
        if (!hinfo->pde) {
                vfree(hinfo);
                return -1;
        }
-       hinfo->pde->data = hinfo;
 
        setup_timer(&hinfo->timer, htable_gc, (unsigned long )hinfo);
        hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);
@@ -301,15 +301,15 @@ static int htable_create(struct xt_hashlimit_mtinfo1 *minfo,
        hinfo->rnd_initialized = 0;
        spin_lock_init(&hinfo->lock);
 
-       hinfo->pde = proc_create(minfo->name, 0,
+       hinfo->pde =
+               proc_create_data(minfo->name, 0,
                                 family == AF_INET ? hashlimit_procdir4 :
                                                     hashlimit_procdir6,
-                                &dl_file_ops);
+                                &dl_file_ops, hinfo);
        if (hinfo->pde == NULL) {
                vfree(hinfo);
                return -1;
        }
-       hinfo->pde->data = hinfo;
 
        setup_timer(&hinfo->timer, htable_gc, (unsigned long)hinfo);
        hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);
@@ -466,38 +466,25 @@ static inline void rateinfo_recalc(struct dsthash_ent *dh, unsigned long now)
 
 static inline __be32 maskl(__be32 a, unsigned int l)
 {
-       return htonl(ntohl(a) & ~(~(u_int32_t)0 >> l));
+       return l ? htonl(ntohl(a) & ~0 << (32 - l)) : 0;
 }
 
 #if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE)
 static void hashlimit_ipv6_mask(__be32 *i, unsigned int p)
 {
        switch (p) {
-       case 0:
-               i[0] = i[1] = 0;
-               i[2] = i[3] = 0;
-               break;
-       case 1 ... 31:
+       case 0 ... 31:
                i[0] = maskl(i[0], p);
                i[1] = i[2] = i[3] = 0;
                break;
-       case 32:
-               i[1] = i[2] = i[3] = 0;
-               break;
-       case 33 ... 63:
+       case 32 ... 63:
                i[1] = maskl(i[1], p - 32);
                i[2] = i[3] = 0;
                break;
-       case 64:
-               i[2] = i[3] = 0;
-               break;
-       case 65 ... 95:
+       case 64 ... 95:
                i[2] = maskl(i[2], p - 64);
                i[3] = 0;
-       case 96:
-               i[3] = 0;
-               break;
-       case 97 ... 127:
+       case 96 ... 127:
                i[3] = maskl(i[3], p - 96);
                break;
        case 128: