Skip to content

Commit d4c19c4

Browse files
Christoph Hellwigdavem330
authored andcommitted
net/tcp: switch ->md5_parse to sockptr_t
Pass a sockptr_t to prepare for set_fs-less handling of the kernel pointer from bpf-cgroup. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 91ac1cc commit d4c19c4

File tree

4 files changed

+7
-6
lines changed

4 files changed

+7
-6
lines changed

include/net/tcp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2002,7 +2002,7 @@ struct tcp_sock_af_ops {
20022002
const struct sk_buff *skb);
20032003
int (*md5_parse)(struct sock *sk,
20042004
int optname,
2005-
char __user *optval,
2005+
sockptr_t optval,
20062006
int optlen);
20072007
#endif
20082008
};

net/ipv4/tcp.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3249,7 +3249,8 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
32493249
#ifdef CONFIG_TCP_MD5SIG
32503250
case TCP_MD5SIG:
32513251
case TCP_MD5SIG_EXT:
3252-
err = tp->af_specific->md5_parse(sk, optname, optval, optlen);
3252+
err = tp->af_specific->md5_parse(sk, optname,
3253+
USER_SOCKPTR(optval), optlen);
32533254
break;
32543255
#endif
32553256
case TCP_USER_TIMEOUT:

net/ipv4/tcp_ipv4.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,7 +1195,7 @@ static void tcp_clear_md5_list(struct sock *sk)
11951195
}
11961196

11971197
static int tcp_v4_parse_md5_keys(struct sock *sk, int optname,
1198-
char __user *optval, int optlen)
1198+
sockptr_t optval, int optlen)
11991199
{
12001200
struct tcp_md5sig cmd;
12011201
struct sockaddr_in *sin = (struct sockaddr_in *)&cmd.tcpm_addr;
@@ -1206,7 +1206,7 @@ static int tcp_v4_parse_md5_keys(struct sock *sk, int optname,
12061206
if (optlen < sizeof(cmd))
12071207
return -EINVAL;
12081208

1209-
if (copy_from_user(&cmd, optval, sizeof(cmd)))
1209+
if (copy_from_sockptr(&cmd, optval, sizeof(cmd)))
12101210
return -EFAULT;
12111211

12121212
if (sin->sin_family != AF_INET)

net/ipv6/tcp_ipv6.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ static struct tcp_md5sig_key *tcp_v6_md5_lookup(const struct sock *sk,
567567
}
568568

569569
static int tcp_v6_parse_md5_keys(struct sock *sk, int optname,
570-
char __user *optval, int optlen)
570+
sockptr_t optval, int optlen)
571571
{
572572
struct tcp_md5sig cmd;
573573
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&cmd.tcpm_addr;
@@ -577,7 +577,7 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, int optname,
577577
if (optlen < sizeof(cmd))
578578
return -EINVAL;
579579

580-
if (copy_from_user(&cmd, optval, sizeof(cmd)))
580+
if (copy_from_sockptr(&cmd, optval, sizeof(cmd)))
581581
return -EFAULT;
582582

583583
if (sin6->sin6_family != AF_INET6)

0 commit comments

Comments
 (0)