[NETFILTER]: x_tables: make xt_compat_match_from_user usable in iterator macros
Make xt_compat_match_from_user return an int to make it usable in the *tables iterator macros and kill a now unnecessary wrapper function. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4b4782486d
commit
8956695131
3 changed files with 6 additions and 16 deletions
|
@ -382,8 +382,8 @@ extern void xt_compat_lock(int af);
|
||||||
extern void xt_compat_unlock(int af);
|
extern void xt_compat_unlock(int af);
|
||||||
|
|
||||||
extern int xt_compat_match_offset(struct xt_match *match);
|
extern int xt_compat_match_offset(struct xt_match *match);
|
||||||
extern void xt_compat_match_from_user(struct xt_entry_match *m,
|
extern int xt_compat_match_from_user(struct xt_entry_match *m,
|
||||||
void **dstptr, int *size);
|
void **dstptr, int *size);
|
||||||
extern int xt_compat_match_to_user(struct xt_entry_match *m,
|
extern int xt_compat_match_to_user(struct xt_entry_match *m,
|
||||||
void __user **dstptr, int *size);
|
void __user **dstptr, int *size);
|
||||||
|
|
||||||
|
|
|
@ -1654,16 +1654,6 @@ release_matches:
|
||||||
return ret;
|
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
|
static int
|
||||||
compat_copy_entry_from_user(struct ipt_entry *e, void **dstptr,
|
compat_copy_entry_from_user(struct ipt_entry *e, void **dstptr,
|
||||||
unsigned int *size, const char *name,
|
unsigned int *size, const char *name,
|
||||||
|
@ -1681,8 +1671,7 @@ compat_copy_entry_from_user(struct ipt_entry *e, void **dstptr,
|
||||||
memcpy(de, e, sizeof(struct ipt_entry));
|
memcpy(de, e, sizeof(struct ipt_entry));
|
||||||
|
|
||||||
*dstptr += sizeof(struct compat_ipt_entry);
|
*dstptr += sizeof(struct compat_ipt_entry);
|
||||||
ret = IPT_MATCH_ITERATE(e, compat_copy_match_from_user, dstptr, size,
|
ret = IPT_MATCH_ITERATE(e, xt_compat_match_from_user, dstptr, size);
|
||||||
name, &de->ip, de->comefrom);
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
de->target_offset = e->target_offset - (origsize - *size);
|
de->target_offset = e->target_offset - (origsize - *size);
|
||||||
|
|
|
@ -342,8 +342,8 @@ int xt_compat_match_offset(struct xt_match *match)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(xt_compat_match_offset);
|
EXPORT_SYMBOL_GPL(xt_compat_match_offset);
|
||||||
|
|
||||||
void xt_compat_match_from_user(struct xt_entry_match *m, void **dstptr,
|
int xt_compat_match_from_user(struct xt_entry_match *m, void **dstptr,
|
||||||
int *size)
|
int *size)
|
||||||
{
|
{
|
||||||
struct xt_match *match = m->u.kernel.match;
|
struct xt_match *match = m->u.kernel.match;
|
||||||
struct compat_xt_entry_match *cm = (struct compat_xt_entry_match *)m;
|
struct compat_xt_entry_match *cm = (struct compat_xt_entry_match *)m;
|
||||||
|
@ -365,6 +365,7 @@ void xt_compat_match_from_user(struct xt_entry_match *m, void **dstptr,
|
||||||
|
|
||||||
*size += off;
|
*size += off;
|
||||||
*dstptr += msize;
|
*dstptr += msize;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(xt_compat_match_from_user);
|
EXPORT_SYMBOL_GPL(xt_compat_match_from_user);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue