extern void xt_compat_unlock(int af);
 
 extern int xt_compat_match_offset(struct xt_match *match);
-extern void xt_compat_match_from_user(struct xt_entry_match *m,
-                                     void **dstptr, int *size);
+extern int xt_compat_match_from_user(struct xt_entry_match *m,
+                                    void **dstptr, int *size);
 extern int xt_compat_match_to_user(struct xt_entry_match *m,
                                   void __user **dstptr, int *size);
 
 
        return ret;
 }
 
-static inline int
-compat_copy_match_from_user(struct ipt_entry_match *m,
-                           void **dstptr, compat_uint_t *size,
-                           const char *name, const struct ipt_ip *ip,
-                           unsigned int hookmask)
-{
-       xt_compat_match_from_user(m, dstptr, size);
-       return 0;
-}
-
 static int
 compat_copy_entry_from_user(struct ipt_entry *e, void **dstptr,
                            unsigned int *size, const char *name,
        memcpy(de, e, sizeof(struct ipt_entry));
 
        *dstptr += sizeof(struct compat_ipt_entry);
-       ret = IPT_MATCH_ITERATE(e, compat_copy_match_from_user, dstptr, size,
-                               name, &de->ip, de->comefrom);
+       ret = IPT_MATCH_ITERATE(e, xt_compat_match_from_user, dstptr, size);
        if (ret)
                return ret;
        de->target_offset = e->target_offset - (origsize - *size);
 
 }
 EXPORT_SYMBOL_GPL(xt_compat_match_offset);
 
-void xt_compat_match_from_user(struct xt_entry_match *m, void **dstptr,
-                              int *size)
+int xt_compat_match_from_user(struct xt_entry_match *m, void **dstptr,
+                             int *size)
 {
        struct xt_match *match = m->u.kernel.match;
        struct compat_xt_entry_match *cm = (struct compat_xt_entry_match *)m;
 
        *size += off;
        *dstptr += msize;
+       return 0;
 }
 EXPORT_SYMBOL_GPL(xt_compat_match_from_user);