mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 13:14:07 +08:00
netfilter: remove the compat_{get,set} methods
All instances handle compat sockopts via in_compat_syscall() now, so remove the compat_{get,set} methods as well as the compat_nf_{get,set}sockopt wrappers. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fc66de8e16
commit
77d4df41d5
@ -164,17 +164,9 @@ struct nf_sockopt_ops {
|
||||
int set_optmin;
|
||||
int set_optmax;
|
||||
int (*set)(struct sock *sk, int optval, void __user *user, unsigned int len);
|
||||
#ifdef CONFIG_COMPAT
|
||||
int (*compat_set)(struct sock *sk, int optval,
|
||||
void __user *user, unsigned int len);
|
||||
#endif
|
||||
int get_optmin;
|
||||
int get_optmax;
|
||||
int (*get)(struct sock *sk, int optval, void __user *user, int *len);
|
||||
#ifdef CONFIG_COMPAT
|
||||
int (*compat_get)(struct sock *sk, int optval,
|
||||
void __user *user, int *len);
|
||||
#endif
|
||||
/* Use the module struct to lock set/get code in place */
|
||||
struct module *owner;
|
||||
};
|
||||
@ -350,12 +342,6 @@ int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
||||
unsigned int len);
|
||||
int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
||||
int *len);
|
||||
#ifdef CONFIG_COMPAT
|
||||
int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval,
|
||||
char __user *opt, unsigned int len);
|
||||
int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval,
|
||||
char __user *opt, int *len);
|
||||
#endif
|
||||
|
||||
struct flowi;
|
||||
struct nf_queue_entry;
|
||||
|
@ -1446,8 +1446,7 @@ mc_msf_out:
|
||||
optname != IP_IPSEC_POLICY &&
|
||||
optname != IP_XFRM_POLICY &&
|
||||
!ip_mroute_opt(optname))
|
||||
err = compat_nf_setsockopt(sk, PF_INET, optname, optval,
|
||||
optlen);
|
||||
err = nf_setsockopt(sk, PF_INET, optname, optval, optlen);
|
||||
#endif
|
||||
return err;
|
||||
}
|
||||
@ -1821,7 +1820,7 @@ int compat_ip_getsockopt(struct sock *sk, int level, int optname,
|
||||
if (get_user(len, optlen))
|
||||
return -EFAULT;
|
||||
|
||||
err = compat_nf_getsockopt(sk, PF_INET, optname, optval, &len);
|
||||
err = nf_getsockopt(sk, PF_INET, optname, optval, &len);
|
||||
if (err >= 0)
|
||||
err = put_user(len, optlen);
|
||||
return err;
|
||||
|
@ -1030,8 +1030,7 @@ mc_msf_out:
|
||||
/* we need to exclude all possible ENOPROTOOPTs except default case */
|
||||
if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY &&
|
||||
optname != IPV6_XFRM_POLICY)
|
||||
err = compat_nf_setsockopt(sk, PF_INET6, optname, optval,
|
||||
optlen);
|
||||
err = nf_setsockopt(sk, PF_INET6, optname, optval, optlen);
|
||||
#endif
|
||||
return err;
|
||||
}
|
||||
@ -1531,7 +1530,7 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
|
||||
if (get_user(len, optlen))
|
||||
return -EFAULT;
|
||||
|
||||
err = compat_nf_getsockopt(sk, PF_INET6, optname, optval, &len);
|
||||
err = nf_getsockopt(sk, PF_INET6, optname, optval, &len);
|
||||
if (err >= 0)
|
||||
err = put_user(len, optlen);
|
||||
}
|
||||
|
@ -122,45 +122,3 @@ int nf_getsockopt(struct sock *sk, u_int8_t pf, int val, char __user *opt,
|
||||
return nf_sockopt(sk, pf, val, opt, len, 1);
|
||||
}
|
||||
EXPORT_SYMBOL(nf_getsockopt);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
static int compat_nf_sockopt(struct sock *sk, u_int8_t pf, int val,
|
||||
char __user *opt, int *len, int get)
|
||||
{
|
||||
struct nf_sockopt_ops *ops;
|
||||
int ret;
|
||||
|
||||
ops = nf_sockopt_find(sk, pf, val, get);
|
||||
if (IS_ERR(ops))
|
||||
return PTR_ERR(ops);
|
||||
|
||||
if (get) {
|
||||
if (ops->compat_get)
|
||||
ret = ops->compat_get(sk, val, opt, len);
|
||||
else
|
||||
ret = ops->get(sk, val, opt, len);
|
||||
} else {
|
||||
if (ops->compat_set)
|
||||
ret = ops->compat_set(sk, val, opt, *len);
|
||||
else
|
||||
ret = ops->set(sk, val, opt, *len);
|
||||
}
|
||||
|
||||
module_put(ops->owner);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int compat_nf_setsockopt(struct sock *sk, u_int8_t pf,
|
||||
int val, char __user *opt, unsigned int len)
|
||||
{
|
||||
return compat_nf_sockopt(sk, pf, val, opt, &len, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(compat_nf_setsockopt);
|
||||
|
||||
int compat_nf_getsockopt(struct sock *sk, u_int8_t pf,
|
||||
int val, char __user *opt, int *len)
|
||||
{
|
||||
return compat_nf_sockopt(sk, pf, val, opt, len, 1);
|
||||
}
|
||||
EXPORT_SYMBOL(compat_nf_getsockopt);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user