Skip to content

Commit

Permalink
fix: compatibility with older (before 5.8) kernels
Browse files Browse the repository at this point in the history
  • Loading branch information
tobyxdd committed Nov 6, 2023
1 parent f34f5d7 commit 0331a10
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions brutal.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,25 @@ struct brutal_params
static struct proto tcp_prot_override __ro_after_init;
static struct proto tcpv6_prot_override __ro_after_init;

#ifdef _LINUX_SOCKPTR_H
static int brutal_set_params(struct sock *sk, sockptr_t optval, unsigned int optlen)
#else
static int brutal_set_params(struct sock *sk, char __user *optval, unsigned int optlen)
#endif
{
struct brutal *brutal = inet_csk_ca(sk);
struct brutal_params params;

if (optlen < sizeof(params))
return -EINVAL;

#ifdef _LINUX_SOCKPTR_H
if (copy_from_sockptr(&params, optval, sizeof(params)))
return -EFAULT;
#else
if (copy_from_user(&params, optval, sizeof(params)))
return -EFAULT;
#endif

// Sanity checks
if (params.rate < MIN_PACING_RATE)
Expand All @@ -63,15 +72,23 @@ static int brutal_set_params(struct sock *sk, sockptr_t optval, unsigned int opt
return 0;
}

#ifdef _LINUX_SOCKPTR_H
static int brutal_tcp_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval, unsigned int optlen)
#else
static int brutal_tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval, unsigned int optlen)
#endif
{
if (level == IPPROTO_TCP && optname == TCP_BRUTAL_PARAMS)
return brutal_set_params(sk, optval, optlen);
else
return tcp_prot.setsockopt(sk, level, optname, optval, optlen);
}

#ifdef _LINUX_SOCKPTR_H
static int brutal_tcpv6_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval, unsigned int optlen)
#else
static int brutal_tcpv6_setsockopt(struct sock *sk, int level, int optname, char __user *optval, unsigned int optlen)
#endif
{
if (level == IPPROTO_TCP && optname == TCP_BRUTAL_PARAMS)
return brutal_set_params(sk, optval, optlen);
Expand Down

0 comments on commit 0331a10

Please sign in to comment.