hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/net/caif/caif_socket.c
....@@ -1,7 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Copyright (C) ST-Ericsson AB 2010
34 * Author: Sjur Brendeland
4
- * License terms: GNU General Public License (GPL) version 2
55 */
66
77 #define pr_fmt(fmt) KBUILD_MODNAME ":%s(): " fmt, __func__
....@@ -670,8 +670,8 @@
670670 return sent ? : err;
671671 }
672672
673
-static int setsockopt(struct socket *sock,
674
- int lvl, int opt, char __user *ov, unsigned int ol)
673
+static int setsockopt(struct socket *sock, int lvl, int opt, sockptr_t ov,
674
+ unsigned int ol)
675675 {
676676 struct sock *sk = sock->sk;
677677 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
....@@ -686,7 +686,7 @@
686686 return -EINVAL;
687687 if (lvl != SOL_CAIF)
688688 goto bad_sol;
689
- if (copy_from_user(&linksel, ov, sizeof(int)))
689
+ if (copy_from_sockptr(&linksel, ov, sizeof(int)))
690690 return -EINVAL;
691691 lock_sock(&(cf_sk->sk));
692692 cf_sk->conn_req.link_selector = linksel;
....@@ -700,7 +700,7 @@
700700 return -ENOPROTOOPT;
701701 lock_sock(&(cf_sk->sk));
702702 if (ol > sizeof(cf_sk->conn_req.param.data) ||
703
- copy_from_user(&cf_sk->conn_req.param.data, ov, ol)) {
703
+ copy_from_sockptr(&cf_sk->conn_req.param.data, ov, ol)) {
704704 release_sock(&cf_sk->sk);
705705 return -EINVAL;
706706 }
....@@ -982,7 +982,6 @@
982982 .listen = sock_no_listen,
983983 .shutdown = sock_no_shutdown,
984984 .setsockopt = setsockopt,
985
- .getsockopt = sock_no_getsockopt,
986985 .sendmsg = caif_seqpkt_sendmsg,
987986 .recvmsg = caif_seqpkt_recvmsg,
988987 .mmap = sock_no_mmap,
....@@ -1003,7 +1002,6 @@
10031002 .listen = sock_no_listen,
10041003 .shutdown = sock_no_shutdown,
10051004 .setsockopt = setsockopt,
1006
- .getsockopt = sock_no_getsockopt,
10071005 .sendmsg = caif_stream_sendmsg,
10081006 .recvmsg = caif_stream_recvmsg,
10091007 .mmap = sock_no_mmap,
....@@ -1022,6 +1020,7 @@
10221020 return;
10231021 }
10241022 sk_stream_kill_queues(&cf_sk->sk);
1023
+ WARN_ON(sk->sk_forward_alloc);
10251024 caif_free_client(&cf_sk->layer);
10261025 }
10271026