mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-05 19:31:57 -04:00
UPSTREAM: net/udp: switch udp_lib_setsockopt to sockptr_t
Pass a sockptr_t to prepare for set_fs-less handling of the kernel pointer from bpf-cgroup. Change-Id: I52a7b51c25c679a672d967abf5195e4f82524840 Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6c0600ad29
commit
75d0191fd1
3 changed files with 9 additions and 7 deletions
|
|
@ -300,7 +300,7 @@ struct sk_buff *skb_udp_tunnel_segment(struct sk_buff *skb,
|
|||
int udp_lib_getsockopt(struct sock *sk, int level, int optname,
|
||||
char __user *optval, int __user *optlen);
|
||||
int udp_lib_setsockopt(struct sock *sk, int level, int optname,
|
||||
char __user *optval, unsigned int optlen,
|
||||
sockptr_t optval, unsigned int optlen,
|
||||
int (*push_pending_frames)(struct sock *));
|
||||
struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
|
||||
__be32 daddr, __be16 dport, int dif);
|
||||
|
|
|
|||
|
|
@ -2553,7 +2553,7 @@ void udp_destroy_sock(struct sock *sk)
|
|||
* Socket option code for UDP
|
||||
*/
|
||||
int udp_lib_setsockopt(struct sock *sk, int level, int optname,
|
||||
char __user *optval, unsigned int optlen,
|
||||
sockptr_t optval, unsigned int optlen,
|
||||
int (*push_pending_frames)(struct sock *))
|
||||
{
|
||||
struct udp_sock *up = udp_sk(sk);
|
||||
|
|
@ -2564,7 +2564,7 @@ int udp_lib_setsockopt(struct sock *sk, int level, int optname,
|
|||
if (optlen < sizeof(int))
|
||||
return -EINVAL;
|
||||
|
||||
if (get_user(val, (int __user *)optval))
|
||||
if (copy_from_sockptr(&val, optval, sizeof(val)))
|
||||
return -EFAULT;
|
||||
|
||||
valbool = val ? 1 : 0;
|
||||
|
|
@ -2668,7 +2668,8 @@ int udp_setsockopt(struct sock *sk, int level, int optname,
|
|||
char __user *optval, unsigned int optlen)
|
||||
{
|
||||
if (level == SOL_UDP || level == SOL_UDPLITE)
|
||||
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
||||
return udp_lib_setsockopt(sk, level, optname,
|
||||
USER_SOCKPTR(optval), optlen,
|
||||
udp_push_pending_frames);
|
||||
return ip_setsockopt(sk, level, optname, optval, optlen);
|
||||
}
|
||||
|
|
@ -2678,7 +2679,7 @@ int compat_udp_setsockopt(struct sock *sk, int level, int optname,
|
|||
char __user *optval, unsigned int optlen)
|
||||
{
|
||||
if (level == SOL_UDP || level == SOL_UDPLITE)
|
||||
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
||||
return udp_lib_setsockopt(sk, level, optname, USER_SOCKPTR(optval), optlen,
|
||||
udp_push_pending_frames);
|
||||
return compat_ip_setsockopt(sk, level, optname, optval, optlen);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1586,7 +1586,8 @@ int udpv6_setsockopt(struct sock *sk, int level, int optname,
|
|||
char __user *optval, unsigned int optlen)
|
||||
{
|
||||
if (level == SOL_UDP || level == SOL_UDPLITE)
|
||||
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
||||
return udp_lib_setsockopt(sk, level, optname,
|
||||
USER_SOCKPTR(optval), optlen,
|
||||
udp_v6_push_pending_frames);
|
||||
return ipv6_setsockopt(sk, level, optname, optval, optlen);
|
||||
}
|
||||
|
|
@ -1596,7 +1597,7 @@ int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
|
|||
char __user *optval, unsigned int optlen)
|
||||
{
|
||||
if (level == SOL_UDP || level == SOL_UDPLITE)
|
||||
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
||||
return udp_lib_setsockopt(sk, level, optname, USER_SOCKPTR(optval), optlen,
|
||||
udp_v6_push_pending_frames);
|
||||
return compat_ipv6_setsockopt(sk, level, optname, optval, optlen);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue