@@ -40,16 +40,25 @@ struct brutal_params
40
40
static struct proto tcp_prot_override __ro_after_init ;
41
41
static struct proto tcpv6_prot_override __ro_after_init ;
42
42
43
+ #ifdef _LINUX_SOCKPTR_H
43
44
static int brutal_set_params (struct sock * sk , sockptr_t optval , unsigned int optlen )
45
+ #else
46
+ static int brutal_set_params (struct sock * sk , char __user * optval , unsigned int optlen )
47
+ #endif
44
48
{
45
49
struct brutal * brutal = inet_csk_ca (sk );
46
50
struct brutal_params params ;
47
51
48
52
if (optlen < sizeof (params ))
49
53
return - EINVAL ;
50
54
55
+ #ifdef _LINUX_SOCKPTR_H
51
56
if (copy_from_sockptr (& params , optval , sizeof (params )))
52
57
return - EFAULT ;
58
+ #else
59
+ if (copy_from_user (& params , optval , sizeof (params )))
60
+ return - EFAULT ;
61
+ #endif
53
62
54
63
// Sanity checks
55
64
if (params .rate < MIN_PACING_RATE )
@@ -63,15 +72,23 @@ static int brutal_set_params(struct sock *sk, sockptr_t optval, unsigned int opt
63
72
return 0 ;
64
73
}
65
74
75
+ #ifdef _LINUX_SOCKPTR_H
66
76
static int brutal_tcp_setsockopt (struct sock * sk , int level , int optname , sockptr_t optval , unsigned int optlen )
77
+ #else
78
+ static int brutal_tcp_setsockopt (struct sock * sk , int level , int optname , char __user * optval , unsigned int optlen )
79
+ #endif
67
80
{
68
81
if (level == IPPROTO_TCP && optname == TCP_BRUTAL_PARAMS )
69
82
return brutal_set_params (sk , optval , optlen );
70
83
else
71
84
return tcp_prot .setsockopt (sk , level , optname , optval , optlen );
72
85
}
73
86
87
+ #ifdef _LINUX_SOCKPTR_H
74
88
static int brutal_tcpv6_setsockopt (struct sock * sk , int level , int optname , sockptr_t optval , unsigned int optlen )
89
+ #else
90
+ static int brutal_tcpv6_setsockopt (struct sock * sk , int level , int optname , char __user * optval , unsigned int optlen )
91
+ #endif
75
92
{
76
93
if (level == IPPROTO_TCP && optname == TCP_BRUTAL_PARAMS )
77
94
return brutal_set_params (sk , optval , optlen );
0 commit comments