diff options
Diffstat (limited to 'net/ipv4/raw.c')
| -rw-r--r-- | net/ipv4/raw.c | 30 | 
1 files changed, 4 insertions, 26 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 47665919048f..6fd4330287c2 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -809,11 +809,11 @@ static int raw_sk_init(struct sock *sk)  	return 0;  } -static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen) +static int raw_seticmpfilter(struct sock *sk, sockptr_t optval, int optlen)  {  	if (optlen > sizeof(struct icmp_filter))  		optlen = sizeof(struct icmp_filter); -	if (copy_from_user(&raw_sk(sk)->filter, optval, optlen)) +	if (copy_from_sockptr(&raw_sk(sk)->filter, optval, optlen))  		return -EFAULT;  	return 0;  } @@ -838,7 +838,7 @@ out:	return ret;  }  static int do_raw_setsockopt(struct sock *sk, int level, int optname, -			  char __user *optval, unsigned int optlen) +			     sockptr_t optval, unsigned int optlen)  {  	if (optname == ICMP_FILTER) {  		if (inet_sk(sk)->inet_num != IPPROTO_ICMP) @@ -850,23 +850,13 @@ static int do_raw_setsockopt(struct sock *sk, int level, int optname,  }  static int raw_setsockopt(struct sock *sk, int level, int optname, -			  char __user *optval, unsigned int optlen) +			  sockptr_t optval, unsigned int optlen)  {  	if (level != SOL_RAW)  		return ip_setsockopt(sk, level, optname, optval, optlen);  	return do_raw_setsockopt(sk, level, optname, optval, optlen);  } -#ifdef CONFIG_COMPAT -static int compat_raw_setsockopt(struct sock *sk, int level, int optname, -				 char __user *optval, unsigned int optlen) -{ -	if (level != SOL_RAW) -		return compat_ip_setsockopt(sk, level, optname, optval, optlen); -	return do_raw_setsockopt(sk, level, optname, optval, optlen); -} -#endif -  static int do_raw_getsockopt(struct sock *sk, int level, int optname,  			  char __user *optval, int __user *optlen)  { @@ -887,16 +877,6 @@ static int raw_getsockopt(struct sock *sk, int level, int optname,  	return do_raw_getsockopt(sk, level, optname, optval, optlen);  } -#ifdef CONFIG_COMPAT -static int compat_raw_getsockopt(struct sock *sk, int level, int optname, -				 char __user *optval, int __user *optlen) -{ -	if (level != SOL_RAW) -		return compat_ip_getsockopt(sk, level, optname, optval, optlen); -	return do_raw_getsockopt(sk, level, optname, optval, optlen); -} -#endif -  static int raw_ioctl(struct sock *sk, int cmd, unsigned long arg)  {  	switch (cmd) { @@ -980,8 +960,6 @@ struct proto raw_prot = {  	.usersize	   = sizeof_field(struct raw_sock, filter),  	.h.raw_hash	   = &raw_v4_hashinfo,  #ifdef CONFIG_COMPAT -	.compat_setsockopt = compat_raw_setsockopt, -	.compat_getsockopt = compat_raw_getsockopt,  	.compat_ioctl	   = compat_raw_ioctl,  #endif  	.diag_destroy	   = raw_abort,  | 
