]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: Convert proto_ops connect() callbacks to use sockaddr_unsized
authorKees Cook <kees@kernel.org>
Tue, 4 Nov 2025 00:26:11 +0000 (16:26 -0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 5 Nov 2025 03:10:32 +0000 (19:10 -0800)
Update all struct proto_ops connect() callback function prototypes from
"struct sockaddr *" to "struct sockaddr_unsized *" to avoid lying to the
compiler about object sizes. Calls into struct proto handlers gain casts
that will be removed in the struct proto conversion patch.

No binary changes expected.

Signed-off-by: Kees Cook <kees@kernel.org>
Link: https://patch.msgid.link/20251104002617.2752303-3-kees@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
72 files changed:
drivers/block/drbd/drbd_receiver.c
drivers/infiniband/hw/erdma/erdma_cm.c
drivers/infiniband/sw/siw/siw_cm.c
drivers/net/ppp/pppoe.c
drivers/net/ppp/pptp.c
drivers/net/wireless/ath/ath10k/qmi.c
drivers/net/wireless/ath/ath11k/qmi.c
drivers/net/wireless/ath/ath12k/qmi.c
drivers/nvme/host/tcp.c
drivers/slimbus/qcom-ngd-ctrl.c
drivers/xen/pvcalls-back.c
fs/coredump.c
fs/dlm/lowcomms.c
fs/ocfs2/cluster/tcp.c
fs/smb/client/connect.c
include/linux/bpf-cgroup.h
include/linux/net.h
include/net/inet_common.h
include/net/sctp/sctp.h
include/net/sock.h
include/net/vsock_addr.h
net/9p/trans_fd.c
net/appletalk/ddp.c
net/atm/pvc.c
net/atm/svc.c
net/ax25/af_ax25.c
net/bluetooth/iso.c
net/bluetooth/l2cap_sock.c
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/sock.c
net/bluetooth/sco.c
net/caif/caif_socket.c
net/can/bcm.c
net/can/j1939/socket.c
net/ceph/messenger.c
net/core/sock.c
net/ieee802154/socket.c
net/ipv4/af_inet.c
net/ipv4/tcp.c
net/ipv4/udp_tunnel_core.c
net/ipv6/ip6_udp_tunnel.c
net/iucv/af_iucv.c
net/l2tp/l2tp_core.c
net/l2tp/l2tp_ppp.c
net/llc/af_llc.c
net/mctp/af_mctp.c
net/mctp/test/utils.c
net/mptcp/subflow.c
net/netfilter/ipvs/ip_vs_sync.c
net/netlink/af_netlink.c
net/netrom/af_netrom.c
net/nfc/llcp_sock.c
net/nfc/rawsock.c
net/phonet/socket.c
net/qrtr/af_qrtr.c
net/rds/af_rds.c
net/rds/tcp_connect.c
net/rose/af_rose.c
net/rxrpc/af_rxrpc.c
net/sctp/socket.c
net/smc/af_smc.c
net/smc/smc.h
net/socket.c
net/sunrpc/clnt.c
net/sunrpc/xprtsock.c
net/tipc/socket.c
net/unix/af_unix.c
net/vmw_vsock/af_vsock.c
net/vmw_vsock/vsock_addr.c
net/x25/af_x25.c
samples/qmi/qmi_sample_client.c
tools/testing/selftests/bpf/test_kmods/bpf_testmod.c

index d9296f74f9025abaab4cb520e5cc904bb4631019..33bc91665fe82ae69a250db7813d57d56d160c02 100644 (file)
@@ -458,7 +458,7 @@ static struct socket *drbd_try_connect(struct drbd_connection *connection)
         * stay C_WF_CONNECTION, don't go Disconnecting! */
        disconnect_on_error = 0;
        what = "connect";
-       err = sock->ops->connect(sock, (struct sockaddr *) &peer_in6, peer_addr_len, 0);
+       err = sock->ops->connect(sock, (struct sockaddr_unsized *) &peer_in6, peer_addr_len, 0);
 
 out:
        if (err < 0) {
index ef66a6359eb9f39066b20133cecec85ce29d7f10..ed21ba0037a4a58f5cc67a5197019eb8d14e7c8f 100644 (file)
@@ -996,7 +996,7 @@ static int kernel_bindconnect(struct socket *s, struct sockaddr *laddr,
        ret = s->ops->bind(s, (struct sockaddr_unsized *)laddr, laddrlen);
        if (ret)
                return ret;
-       ret = s->ops->connect(s, raddr, raddrlen, flags);
+       ret = s->ops->connect(s, (struct sockaddr_unsized *)raddr, raddrlen, flags);
        return ret < 0 ? ret : 0;
 }
 
index 7fe118cacb3ff068eef9582af6b8e7d431109321..eb0bd4f79a8553139944f05703d45b167e7a795a 100644 (file)
@@ -1344,7 +1344,7 @@ static int kernel_bindconnect(struct socket *s, struct sockaddr *laddr,
        if (rv < 0)
                return rv;
 
-       rv = s->ops->connect(s, raddr, size, flags);
+       rv = s->ops->connect(s, (struct sockaddr_unsized *)raddr, size, flags);
 
        return rv < 0 ? rv : 0;
 }
index 4ac6afce267b93e30d6e4e1930ed64f28bc48ba0..4275b393a45440b2002ba2f8a64f5a5af703d7ef 100644 (file)
@@ -608,8 +608,8 @@ static int pppoe_release(struct socket *sock)
        return 0;
 }
 
-static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
-                 int sockaddr_len, int flags)
+static int pppoe_connect(struct socket *sock, struct sockaddr_unsized *uservaddr,
+                        int sockaddr_len, int flags)
 {
        struct sock *sk = sock->sk;
        struct sockaddr_pppox *sp = (struct sockaddr_pppox *)uservaddr;
index d07e87a0974c035ec5762e76753fdf0fd3ffe72c..b18acd810561992d1e00521c415ddfcf273070d2 100644 (file)
@@ -415,8 +415,8 @@ out:
        return error;
 }
 
-static int pptp_connect(struct socket *sock, struct sockaddr *uservaddr,
-       int sockaddr_len, int flags)
+static int pptp_connect(struct socket *sock, struct sockaddr_unsized *uservaddr,
+                       int sockaddr_len, int flags)
 {
        struct sock *sk = sock->sk;
        struct sockaddr_pppox *sp = (struct sockaddr_pppox *) uservaddr;
index f1f33af0170a08744ae658130e29781c0e5bedfb..8275345631a0be56e0090dcd28e1bd375591a15a 100644 (file)
@@ -986,7 +986,7 @@ static int ath10k_qmi_new_server(struct qmi_handle *qmi_hdl,
 
        ath10k_dbg(ar, ATH10K_DBG_QMI, "wifi fw qmi service found\n");
 
-       ret = kernel_connect(qmi_hdl->sock, (struct sockaddr *)&qmi->sq,
+       ret = kernel_connect(qmi_hdl->sock, (struct sockaddr_unsized *)&qmi->sq,
                             sizeof(qmi->sq), 0);
        if (ret) {
                ath10k_err(ar, "failed to connect to a remote QMI service port\n");
index aea56c38bf8f38982532fc90de25582c26ba4393..ff6a97e328b88efff638ec2a98809ea34bdc0ab5 100644 (file)
@@ -3177,7 +3177,7 @@ static int ath11k_qmi_ops_new_server(struct qmi_handle *qmi_hdl,
        sq->sq_node = service->node;
        sq->sq_port = service->port;
 
-       ret = kernel_connect(qmi_hdl->sock, (struct sockaddr *)sq,
+       ret = kernel_connect(qmi_hdl->sock, (struct sockaddr_unsized *)sq,
                             sizeof(*sq), 0);
        if (ret) {
                ath11k_warn(ab, "failed to connect to qmi remote service: %d\n", ret);
index 36325e62aa2423fcc091d6d447700d6598a16317..cf9c25df3ffd0925efdd22a6ca14b31846c259ff 100644 (file)
@@ -3740,7 +3740,7 @@ static int ath12k_qmi_ops_new_server(struct qmi_handle *qmi_hdl,
        sq->sq_node = service->node;
        sq->sq_port = service->port;
 
-       ret = kernel_connect(qmi_hdl->sock, (struct sockaddr *)sq,
+       ret = kernel_connect(qmi_hdl->sock, (struct sockaddr_unsized *)sq,
                             sizeof(*sq), 0);
        if (ret) {
                ath12k_warn(ab, "qmi failed to connect to remote service %d\n", ret);
index 35d0bd91f6fd7e6159aedcdda85162587a936383..6795b8286c3541b88642daa7197807d89cb79ef4 100644 (file)
@@ -1872,7 +1872,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl, int qid,
        dev_dbg(nctrl->device, "connecting queue %d\n",
                        nvme_tcp_queue_id(queue));
 
-       ret = kernel_connect(queue->sock, (struct sockaddr *)&ctrl->addr,
+       ret = kernel_connect(queue->sock, (struct sockaddr_unsized *)&ctrl->addr,
                sizeof(ctrl->addr), 0);
        if (ret) {
                dev_err(nctrl->device,
index 4fb66986cc22e02463329f89ac7a57f5f71db4ec..fdb94dc4a73079e7ef97cdfeabdfc4e9aaf84662 100644 (file)
@@ -463,7 +463,7 @@ static int qcom_slim_qmi_init(struct qcom_slim_ngd_ctrl *ctrl,
        }
 
        rc = kernel_connect(handle->sock,
-                               (struct sockaddr *)&ctrl->qmi.svc_info,
+                               (struct sockaddr_unsized *)&ctrl->qmi.svc_info,
                                sizeof(ctrl->qmi.svc_info), 0);
        if (rc < 0) {
                dev_err(ctrl->dev, "Remote Service connect failed: %d\n", rc);
index da1b516b9cfddbced68c7bd2de9405f2973887fa..c5b6f6fa11eb7b4b245ba446bcc8d3e94644f76a 100644 (file)
@@ -409,7 +409,7 @@ static int pvcalls_back_connect(struct xenbus_device *dev,
        ret = sock_create(AF_INET, SOCK_STREAM, 0, &sock);
        if (ret < 0)
                goto out;
-       ret = inet_stream_connect(sock, sa, req->u.connect.len, 0);
+       ret = inet_stream_connect(sock, (struct sockaddr_unsized *)sa, req->u.connect.len, 0);
        if (ret < 0) {
                sock_release(sock);
                goto out;
index 5c1c381ee380693c0d3e0f1eacd98cb3d8339986..14837d9e2abbed887ed57ef26c47750752881466 100644 (file)
@@ -708,7 +708,7 @@ static bool coredump_sock_connect(struct core_name *cn, struct coredump_params *
         */
        pidfs_coredump(cprm);
 
-       retval = kernel_connect(socket, (struct sockaddr *)(&addr), addr_len,
+       retval = kernel_connect(socket, (struct sockaddr_unsized *)(&addr), addr_len,
                                O_NONBLOCK | SOCK_COREDUMP);
 
        if (retval) {
index 0500421b6e3bd2c9765b382418b30d2b814b9a39..f832dafdaca82fdfeb3107ab7315a9be4dbe02fa 100644 (file)
@@ -1599,7 +1599,7 @@ static int dlm_connect(struct connection *con)
 
        log_print_ratelimited("connecting to %d", con->nodeid);
        make_sockaddr(&addr, dlm_config.ci_tcp_port, &addr_len);
-       result = kernel_connect(sock, (struct sockaddr *)&addr, addr_len, 0);
+       result = kernel_connect(sock, (struct sockaddr_unsized *)&addr, addr_len, 0);
        switch (result) {
        case -EINPROGRESS:
                /* not an error */
index c7734193d8d7bad94ccfa5be7a70119e0c21bfff..79b281e32f4cea49fedffd38a473a95e4e267b25 100644 (file)
@@ -1638,7 +1638,7 @@ static void o2net_start_connect(struct work_struct *work)
        remoteaddr.sin_port = node->nd_ipv4_port;
 
        ret = sc->sc_sock->ops->connect(sc->sc_sock,
-                                       (struct sockaddr *)&remoteaddr,
+                                       (struct sockaddr_unsized *)&remoteaddr,
                                        sizeof(remoteaddr),
                                        O_NONBLOCK);
        if (ret == -EINPROGRESS)
index 96d97226302035c3dccfd697eb1a4f9ef8d5215c..73120988661a9b09dab626c1761987cc0d8e3b22 100644 (file)
@@ -3411,7 +3411,7 @@ generic_ip_connect(struct TCP_Server_Info *server)
                 socket->sk->sk_sndbuf,
                 socket->sk->sk_rcvbuf, socket->sk->sk_rcvtimeo);
 
-       rc = kernel_connect(socket, saddr, slen,
+       rc = kernel_connect(socket, (struct sockaddr_unsized *)saddr, slen,
                            server->noblockcnt ? O_NONBLOCK : 0);
        /*
         * When mounting SMB root file systems, we do not want to block in
index aedf573bdb426b1e6b4d293a9f498533ecddb016..a7fb4f46974f2de004baccf153c42f3738b463e1 100644 (file)
@@ -238,7 +238,7 @@ static inline bool cgroup_bpf_sock_enabled(struct sock *sk,
 ({                                                                            \
        int __ret = 0;                                                         \
        if (cgroup_bpf_enabled(atype))                                         \
-               __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \
+               __ret = __cgroup_bpf_run_filter_sock_addr(sk, (struct sockaddr *)uaddr, uaddrlen, \
                                                          atype, NULL, NULL);  \
        __ret;                                                                 \
 })
@@ -248,7 +248,7 @@ static inline bool cgroup_bpf_sock_enabled(struct sock *sk,
        int __ret = 0;                                                         \
        if (cgroup_bpf_enabled(atype))  {                                      \
                lock_sock(sk);                                                 \
-               __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \
+               __ret = __cgroup_bpf_run_filter_sock_addr(sk, (struct sockaddr *)uaddr, uaddrlen, \
                                                          atype, t_ctx, NULL); \
                release_sock(sk);                                              \
        }                                                                      \
@@ -266,7 +266,7 @@ static inline bool cgroup_bpf_sock_enabled(struct sock *sk,
        int __ret = 0;                                                         \
        if (cgroup_bpf_enabled(atype))  {                                      \
                lock_sock(sk);                                                 \
-               __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \
+               __ret = __cgroup_bpf_run_filter_sock_addr(sk, (struct sockaddr *)uaddr, uaddrlen, \
                                                          atype, NULL, &__flags); \
                release_sock(sk);                                              \
                if (__flags & BPF_RET_BIND_NO_CAP_NET_BIND_SERVICE)            \
index 0e316f063113079ae68dcd434ba4bdfd70369d2c..db6bc997ca5b09ffaddf6f75ee205fea69f07b99 100644 (file)
@@ -166,7 +166,7 @@ struct proto_ops {
                                      struct sockaddr_unsized *myaddr,
                                      int sockaddr_len);
        int             (*connect)   (struct socket *sock,
-                                     struct sockaddr *vaddr,
+                                     struct sockaddr_unsized *vaddr,
                                      int sockaddr_len, int flags);
        int             (*socketpair)(struct socket *sock1,
                                      struct socket *sock2);
@@ -348,7 +348,7 @@ int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec,
 int kernel_bind(struct socket *sock, struct sockaddr_unsized *addr, int addrlen);
 int kernel_listen(struct socket *sock, int backlog);
 int kernel_accept(struct socket *sock, struct socket **newsock, int flags);
-int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,
+int kernel_connect(struct socket *sock, struct sockaddr_unsized *addr, int addrlen,
                   int flags);
 int kernel_getsockname(struct socket *sock, struct sockaddr *addr);
 int kernel_getpeername(struct socket *sock, struct sockaddr *addr);
index 1666cf6f539e1b8c7181d21af266141a533ad4e7..ebafd96912bb1a5373729eea40fef1751b452b96 100644 (file)
@@ -23,11 +23,11 @@ struct sockaddr;
 struct socket;
 
 int inet_release(struct socket *sock);
-int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr,
+int inet_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                        int addr_len, int flags);
-int __inet_stream_connect(struct socket *sock, struct sockaddr *uaddr,
+int __inet_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                          int addr_len, int flags, int is_sendmsg);
-int inet_dgram_connect(struct socket *sock, struct sockaddr *uaddr,
+int inet_dgram_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                       int addr_len, int flags);
 int inet_accept(struct socket *sock, struct socket *newsock,
                struct proto_accept_arg *arg);
index bb4b80c12541a375ae474632519c040a656fe964..58242b37b47a1a49f2abd0e9cfab80a28a4625ab 100644 (file)
@@ -85,7 +85,7 @@ void sctp_udp_sock_stop(struct net *net);
 /*
  * sctp/socket.c
  */
-int sctp_inet_connect(struct socket *sock, struct sockaddr *uaddr,
+int sctp_inet_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                      int addr_len, int flags);
 int sctp_backlog_rcv(struct sock *sk, struct sk_buff *skb);
 int sctp_inet_listen(struct socket *sock, int backlog);
index acbb78c96d695d1d62c48a0655812215cf033bc1..589fbce77217c0c092f962b8d04cf981368fe230 100644 (file)
@@ -1921,7 +1921,7 @@ int sock_cmsg_send(struct sock *sk, struct msghdr *msg,
  * does not implement a particular function.
  */
 int sock_no_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len);
-int sock_no_connect(struct socket *, struct sockaddr *, int, int);
+int sock_no_connect(struct socket *sock, struct sockaddr_unsized *saddr, int len, int flags);
 int sock_no_socketpair(struct socket *, struct socket *);
 int sock_no_accept(struct socket *, struct socket *, struct proto_accept_arg *);
 int sock_no_getname(struct socket *, struct sockaddr *, int);
index cf8cc140d68dbd51eef4f1f102ace6408fcfaa61..c3f4cc206198f33d24192fea8e8e9c2e5cc8aa10 100644 (file)
@@ -16,7 +16,7 @@ bool vsock_addr_bound(const struct sockaddr_vm *addr);
 void vsock_addr_unbind(struct sockaddr_vm *addr);
 bool vsock_addr_equals_addr(const struct sockaddr_vm *addr,
                            const struct sockaddr_vm *other);
-int vsock_addr_cast(const struct sockaddr *addr, size_t len,
+int vsock_addr_cast(const struct sockaddr_unsized *addr, size_t len,
                    struct sockaddr_vm **out_addr);
 
 #endif
index ef517bb307e27edb3cdaa22adc34d8ec5eb59689..49d674f5e73a8eeabeb36dd31c25b0e1fcc768fa 100644 (file)
@@ -1018,7 +1018,7 @@ p9_fd_create_tcp(struct p9_client *client, const char *addr, char *args)
        }
 
        err = READ_ONCE(csocket->ops)->connect(csocket,
-                                              (struct sockaddr *)&stor,
+                                              (struct sockaddr_unsized *)&stor,
                                               sizeof(stor), 0);
        if (err < 0) {
                pr_err("%s (%d): problem connecting socket to %s\n",
@@ -1058,8 +1058,8 @@ p9_fd_create_unix(struct p9_client *client, const char *addr, char *args)
 
                return err;
        }
-       err = READ_ONCE(csocket->ops)->connect(csocket, (struct sockaddr *)&sun_server,
-                       sizeof(struct sockaddr_un) - 1, 0);
+       err = READ_ONCE(csocket->ops)->connect(csocket, (struct sockaddr_unsized *)&sun_server,
+                                              sizeof(struct sockaddr_un) - 1, 0);
        if (err < 0) {
                pr_err("%s (%d): problem connecting socket: %s: %d\n",
                       __func__, task_pid_nr(current), addr, err);
index 45db43cde67f19de9cd16ff4e0da5061825bf293..2a01fff46c9da614fcfd27af034fdf867f4b01fc 100644 (file)
@@ -1204,7 +1204,7 @@ out:
 }
 
 /* Set the address we talk to */
-static int atalk_connect(struct socket *sock, struct sockaddr *uaddr,
+static int atalk_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                         int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
index 62fdf07c53dead2b4883328484cddd4f34568d7f..8f5e76f5dd9e8d2188b39e0e6d0657360b663254 100644 (file)
@@ -56,10 +56,10 @@ out:
        return error;
 }
 
-static int pvc_connect(struct socket *sock, struct sockaddr *sockaddr,
+static int pvc_connect(struct socket *sock, struct sockaddr_unsized *sockaddr,
                       int sockaddr_len, int flags)
 {
-       return pvc_bind(sock, (struct sockaddr_unsized *)sockaddr, sockaddr_len);
+       return pvc_bind(sock, sockaddr, sockaddr_len);
 }
 
 static int pvc_setsockopt(struct socket *sock, int level, int optname,
index 1906a493c8aa06404e8a776e4163097425f78f5e..005964250ecd2970a7c7b62c54a8df262e66a773 100644 (file)
@@ -153,7 +153,7 @@ out:
        return error;
 }
 
-static int svc_connect(struct socket *sock, struct sockaddr *sockaddr,
+static int svc_connect(struct socket *sock, struct sockaddr_unsized *sockaddr,
                       int sockaddr_len, int flags)
 {
        DEFINE_WAIT(wait);
index 23c558ff96822502aa2832411676929beddd0f48..7ebbff2f002010952bd556f9172e47cbc2f9b449 100644 (file)
@@ -1175,7 +1175,7 @@ out:
  *     FIXME: nonblock behaviour looks like it may have a bug.
  */
 static int __must_check ax25_connect(struct socket *sock,
-       struct sockaddr *uaddr, int addr_len, int flags)
+       struct sockaddr_unsized *uaddr, int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
        ax25_cb *ax25 = sk_to_ax25(sk), *ax25t;
index 6a7e1b4a8701be9fde37aaebd08c3a950b7a5bee..243505b897331a8c11dc6957269d3c24ce4f4a53 100644 (file)
@@ -1080,7 +1080,7 @@ done:
        return err;
 }
 
-static int iso_sock_connect(struct socket *sock, struct sockaddr *addr,
+static int iso_sock_connect(struct socket *sock, struct sockaddr_unsized *addr,
                            int alen, int flags)
 {
        struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
index ca7394d8fa4e24a146642051309bdf64c4ef9b12..9ee189c815d4989c9c909d3856dd46ff27cdff00 100644 (file)
@@ -178,7 +178,7 @@ done:
        return err;
 }
 
-static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr,
+static int l2cap_sock_connect(struct socket *sock, struct sockaddr_unsized *addr,
                              int alen, int flags)
 {
        struct sock *sk = sock->sk;
index d62fd6c5761752d2e4919a048b624ef58430928d..57b1dca8141f0c34b8ca5c76ae18b5ed7c22d51c 100644 (file)
@@ -808,7 +808,7 @@ static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src,
        addr.l2_psm    = cpu_to_le16(L2CAP_PSM_RFCOMM);
        addr.l2_cid    = 0;
        addr.l2_bdaddr_type = BDADDR_BREDR;
-       *err = kernel_connect(sock, (struct sockaddr *) &addr, sizeof(addr), O_NONBLOCK);
+       *err = kernel_connect(sock, (struct sockaddr_unsized *)&addr, sizeof(addr), O_NONBLOCK);
        if (*err == 0 || *err == -EINPROGRESS)
                return s;
 
index 8c8762bbc6de36e6654cf2cc1e3e56f4e31a72cb..be6639cd6f59053fc1bc55c88a62dc8ac3d28fe8 100644 (file)
@@ -371,7 +371,8 @@ done:
        return err;
 }
 
-static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
+static int rfcomm_sock_connect(struct socket *sock, struct sockaddr_unsized *addr,
+                              int alen, int flags)
 {
        struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
        struct sock *sk = sock->sk;
index 01d878205e582bf46be2ee5213dafad69ddadd21..7afe65e7ff371d2ccd58be8621ca1b517c8d5f84 100644 (file)
@@ -639,7 +639,7 @@ done:
        return err;
 }
 
-static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
+static int sco_sock_connect(struct socket *sock, struct sockaddr_unsized *addr, int alen, int flags)
 {
        struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
        struct sock *sk = sock->sk;
index 039dfbd367c97de38b58777f6c611fa59ce3ddbf..af218742af5ac280f1339e70f1d6e7329241f510 100644 (file)
@@ -734,7 +734,7 @@ bad_sol:
  *  o sock->state: holds the SS_* socket state and is updated by connect and
  *     disconnect.
  */
-static int caif_connect(struct socket *sock, struct sockaddr *uaddr,
+static int caif_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                        int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
index 5e690a2377e48f49e595ea0ecd5813352e242821..7eba8ae01a5b1bb06fb745b6e656fa23b3935fd6 100644 (file)
@@ -1657,7 +1657,7 @@ static int bcm_release(struct socket *sock)
        return 0;
 }
 
-static int bcm_connect(struct socket *sock, struct sockaddr *uaddr, int len,
+static int bcm_connect(struct socket *sock, struct sockaddr_unsized *uaddr, int len,
                       int flags)
 {
        struct sockaddr_can *addr = (struct sockaddr_can *)uaddr;
index a2abedc757d0f2ba9471ebef295288155f4960a3..6272326dd614a97b2eb7585f9c85f63e251c255f 100644 (file)
@@ -535,7 +535,7 @@ static int j1939_sk_bind(struct socket *sock, struct sockaddr_unsized *uaddr, in
        return ret;
 }
 
-static int j1939_sk_connect(struct socket *sock, struct sockaddr *uaddr,
+static int j1939_sk_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                            int len, int flags)
 {
        struct sockaddr_can *addr = (struct sockaddr_can *)uaddr;
index f8181acaf87040afb664cd437ee73727ed0c6b09..70b25f4ecba6722f3c6c2d4e65f11f3c5f41add8 100644 (file)
@@ -460,7 +460,7 @@ int ceph_tcp_connect(struct ceph_connection *con)
        set_sock_callbacks(sock, con);
 
        con_sock_state_connecting(con);
-       ret = kernel_connect(sock, (struct sockaddr *)&ss, sizeof(ss),
+       ret = kernel_connect(sock, (struct sockaddr_unsized *)&ss, sizeof(ss),
                             O_NONBLOCK);
        if (ret == -EINPROGRESS) {
                dout("connect %s EINPROGRESS sk_state = %u\n",
index 1e1ce18bba1611b990ae164c0b170936f147fa7d..f97a0e95899146789534dad8363e926c888d418f 100644 (file)
@@ -3468,7 +3468,7 @@ int sock_no_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len)
 }
 EXPORT_SYMBOL(sock_no_bind);
 
-int sock_no_connect(struct socket *sock, struct sockaddr *saddr,
+int sock_no_connect(struct socket *sock, struct sockaddr_unsized *saddr,
                    int len, int flags)
 {
        return -EOPNOTSUPP;
index 99ddfad9bb88fc89387798d5df66136415d91144..b93fd85f248a67c90e0096806a2718873dfee4ad 100644 (file)
@@ -107,7 +107,7 @@ static int ieee802154_sock_bind(struct socket *sock, struct sockaddr_unsized *ua
        return sock_no_bind(sock, uaddr, addr_len);
 }
 
-static int ieee802154_sock_connect(struct socket *sock, struct sockaddr *uaddr,
+static int ieee802154_sock_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                                   int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
@@ -118,7 +118,7 @@ static int ieee802154_sock_connect(struct socket *sock, struct sockaddr *uaddr,
        if (uaddr->sa_family == AF_UNSPEC)
                return sk->sk_prot->disconnect(sk, flags);
 
-       return sk->sk_prot->connect(sk, uaddr, addr_len);
+       return sk->sk_prot->connect(sk, (struct sockaddr *)uaddr, addr_len);
 }
 
 static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg,
index aa43d16e48ff13bc3ada037fd34a06c418c7d3f8..0844de9ac6a48b2137766a1c5c01880277607c0c 100644 (file)
@@ -567,7 +567,7 @@ out:
        return err;
 }
 
-int inet_dgram_connect(struct socket *sock, struct sockaddr *uaddr,
+int inet_dgram_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                       int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
@@ -584,14 +584,14 @@ int inet_dgram_connect(struct socket *sock, struct sockaddr *uaddr,
                return prot->disconnect(sk, flags);
 
        if (BPF_CGROUP_PRE_CONNECT_ENABLED(sk)) {
-               err = prot->pre_connect(sk, uaddr, addr_len);
+               err = prot->pre_connect(sk, (struct sockaddr *)uaddr, addr_len);
                if (err)
                        return err;
        }
 
        if (data_race(!inet_sk(sk)->inet_num) && inet_autobind(sk))
                return -EAGAIN;
-       return prot->connect(sk, uaddr, addr_len);
+       return prot->connect(sk, (struct sockaddr *)uaddr, addr_len);
 }
 EXPORT_SYMBOL(inet_dgram_connect);
 
@@ -623,7 +623,7 @@ static long inet_wait_for_connect(struct sock *sk, long timeo, int writebias)
  *     Connect to a remote host. There is regrettably still a little
  *     TCP 'magic' in here.
  */
-int __inet_stream_connect(struct socket *sock, struct sockaddr *uaddr,
+int __inet_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                          int addr_len, int flags, int is_sendmsg)
 {
        struct sock *sk = sock->sk;
@@ -671,12 +671,12 @@ int __inet_stream_connect(struct socket *sock, struct sockaddr *uaddr,
                        goto out;
 
                if (BPF_CGROUP_PRE_CONNECT_ENABLED(sk)) {
-                       err = sk->sk_prot->pre_connect(sk, uaddr, addr_len);
+                       err = sk->sk_prot->pre_connect(sk, (struct sockaddr *)uaddr, addr_len);
                        if (err)
                                goto out;
                }
 
-               err = sk->sk_prot->connect(sk, uaddr, addr_len);
+               err = sk->sk_prot->connect(sk, (struct sockaddr *)uaddr, addr_len);
                if (err < 0)
                        goto out;
 
@@ -741,7 +741,7 @@ sock_error:
 }
 EXPORT_SYMBOL(__inet_stream_connect);
 
-int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr,
+int inet_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                        int addr_len, int flags)
 {
        int err;
index a9345aa5a2e5f4a2ca7ca599e7523d017ffa64ee..dee578aad690d7cf125c2a8697f0a52f3a69bff8 100644 (file)
@@ -1061,7 +1061,7 @@ int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, int *copied,
                }
        }
        flags = (msg->msg_flags & MSG_DONTWAIT) ? O_NONBLOCK : 0;
-       err = __inet_stream_connect(sk->sk_socket, uaddr,
+       err = __inet_stream_connect(sk->sk_socket, (struct sockaddr_unsized *)uaddr,
                                    msg->msg_namelen, flags, 1);
        /* fastopen_req could already be freed in __inet_stream_connect
         * if the connection times out or gets rst
index 11e5a88c923de2e2bfa7ad201d8fcfc4fc610dcf..b1f667c52cb215ceec288f83f384a5a0ff9c094c 100644 (file)
@@ -38,7 +38,7 @@ int udp_sock_create4(struct net *net, struct udp_port_cfg *cfg,
                udp_addr.sin_family = AF_INET;
                udp_addr.sin_addr = cfg->peer_ip;
                udp_addr.sin_port = cfg->peer_udp_port;
-               err = kernel_connect(sock, (struct sockaddr *)&udp_addr,
+               err = kernel_connect(sock, (struct sockaddr_unsized *)&udp_addr,
                                     sizeof(udp_addr), 0);
                if (err < 0)
                        goto error;
index b0d9286b33c88ca017e8fd73c8fbc1fc3511aa78..cef3e021074440adc5c284719fc45f79dffd7dd8 100644 (file)
@@ -52,7 +52,7 @@ int udp_sock_create6(struct net *net, struct udp_port_cfg *cfg,
                       sizeof(udp6_addr.sin6_addr));
                udp6_addr.sin6_port = cfg->peer_udp_port;
                err = kernel_connect(sock,
-                                    (struct sockaddr *)&udp6_addr,
+                                    (struct sockaddr_unsized *)&udp6_addr,
                                     sizeof(udp6_addr), 0);
        }
        if (err < 0)
index 3941e32cda690b7434ed3eea2ab36a9685e42af8..a4f1df92417d9fb241da1dcdae9a804a5332d521 100644 (file)
@@ -668,7 +668,7 @@ static int iucv_sock_autobind(struct sock *sk)
        return err;
 }
 
-static int afiucv_path_connect(struct socket *sock, struct sockaddr *addr)
+static int afiucv_path_connect(struct socket *sock, struct sockaddr_unsized *addr)
 {
        DECLARE_SOCKADDR(struct sockaddr_iucv *, sa, addr);
        struct sock *sk = sock->sk;
@@ -714,7 +714,7 @@ done:
 }
 
 /* Connect an unconnected socket */
-static int iucv_sock_connect(struct socket *sock, struct sockaddr *addr,
+static int iucv_sock_connect(struct socket *sock, struct sockaddr_unsized *addr,
                             int alen, int flags)
 {
        DECLARE_SOCKADDR(struct sockaddr_iucv *, sa, addr);
index 4b5e372a5cd4373c2ee99cf6ad02fbba5119ee91..c4f4a57cd67c919cdbf93e1b99fb4cf9e7b0f59f 100644 (file)
@@ -1513,7 +1513,7 @@ static int l2tp_tunnel_sock_create(struct net *net,
                               sizeof(ip6_addr.l2tp_addr));
                        ip6_addr.l2tp_conn_id = peer_tunnel_id;
                        err = kernel_connect(sock,
-                                            (struct sockaddr *)&ip6_addr,
+                                            (struct sockaddr_unsized *)&ip6_addr,
                                             sizeof(ip6_addr), 0);
                        if (err < 0)
                                goto out;
@@ -1538,7 +1538,7 @@ static int l2tp_tunnel_sock_create(struct net *net,
                        ip_addr.l2tp_family = AF_INET;
                        ip_addr.l2tp_addr = cfg->peer_ip;
                        ip_addr.l2tp_conn_id = peer_tunnel_id;
-                       err = kernel_connect(sock, (struct sockaddr *)&ip_addr,
+                       err = kernel_connect(sock, (struct sockaddr_unsized *)&ip_addr,
                                             sizeof(ip_addr), 0);
                        if (err < 0)
                                goto out;
index 5e12e7ce17d8a7cf4afc2486f1c3c42f98feddf1..ae4543d5597b6677c758b4919db71a28909cf3ff 100644 (file)
@@ -684,7 +684,7 @@ static struct l2tp_tunnel *pppol2tp_tunnel_get(struct net *net,
 
 /* connect() handler. Attach a PPPoX socket to a tunnel UDP socket
  */
-static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr,
+static int pppol2tp_connect(struct socket *sock, struct sockaddr_unsized *uservaddr,
                            int sockaddr_len, int flags)
 {
        struct sock *sk = sock->sk;
index e5bb0c0d708cc0077b0a3974a401ff37bce93d7a..59d593bb5d18663217c86a4fc14a9f56205d03a1 100644 (file)
@@ -477,7 +477,7 @@ out:
  *     This function will autobind if user did not previously call bind.
  *     Returns: 0 upon success, negative otherwise.
  */
-static int llc_ui_connect(struct socket *sock, struct sockaddr *uaddr,
+static int llc_ui_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                          int addrlen, int flags)
 {
        struct sock *sk = sock->sk;
index 5b1ef50637b7087856324819925b5e867d7e026e..209a963112e3a516230e03909ca31dfddf400cac 100644 (file)
@@ -128,7 +128,7 @@ out_release:
 /* Used to set a specific peer prior to bind. Not used for outbound
  * connections (Tag Owner set) since MCTP is a datagram protocol.
  */
-static int mctp_connect(struct socket *sock, struct sockaddr *addr,
+static int mctp_connect(struct socket *sock, struct sockaddr_unsized *addr,
                        int addrlen, int flags)
 {
        struct sock *sk = sock->sk;
index 953d419027718959d913956c4c3893ef91624eb5..35f6be8145674b56a72b183402749eb856155424 100644 (file)
@@ -279,7 +279,7 @@ void mctp_test_bind_run(struct kunit *test,
                addr.smctp_addr.s_addr = setup->peer_addr;
                /* connect() type must match bind() type */
                addr.smctp_type = setup->bind_type;
-               rc = kernel_connect(*sock, (struct sockaddr *)&addr,
+               rc = kernel_connect(*sock, (struct sockaddr_unsized *)&addr,
                                    sizeof(addr), 0);
                KUNIT_EXPECT_EQ(test, rc, 0);
        }
@@ -292,5 +292,6 @@ void mctp_test_bind_run(struct kunit *test,
        addr.smctp_type = setup->bind_type;
 
        *ret_bind_errno =
-               kernel_bind(*sock, (struct sockaddr *)&addr, sizeof(addr));
+               kernel_bind(*sock, (struct sockaddr_unsized *)&addr,
+                           sizeof(addr));
 }
index d90237bf433cd0e6c68ff6504a52ded9c3155d1f..30961b3d170287905b40f38a3cc62179f65fbbf8 100644 (file)
@@ -1680,7 +1680,7 @@ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_pm_local *local,
 
        sock_hold(ssk);
        list_add_tail(&subflow->node, &msk->conn_list);
-       err = kernel_connect(sf, (struct sockaddr *)&addr, addrlen, O_NONBLOCK);
+       err = kernel_connect(sf, (struct sockaddr_unsized *)&addr, addrlen, O_NONBLOCK);
        if (err && err != -EINPROGRESS) {
                MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_JOINSYNTXCONNECTERR);
                pr_debug("msk=%p local=%d remote=%d connect error: %d\n",
index d8c089ef387cfd78156263ea05f1a1309af4bada..5a0c6f42bd8f23632d13a3b6968ec9d58d22a4ae 100644 (file)
@@ -1501,7 +1501,7 @@ static int make_send_sock(struct netns_ipvs *ipvs, int id,
        }
 
        get_mcast_sockaddr(&mcast_addr, &salen, &ipvs->mcfg, id);
-       result = kernel_connect(sock, (struct sockaddr *)&mcast_addr,
+       result = kernel_connect(sock, (struct sockaddr_unsized *)&mcast_addr,
                                salen, 0);
        if (result < 0) {
                pr_err("Error connecting to the multicast addr\n");
index 18490a56edd021374777c845b6a13d635b87f57c..8e5151f0c6e46561dcc120064459197eec3a8311 100644 (file)
@@ -1054,7 +1054,7 @@ unlock:
        return err;
 }
 
-static int netlink_connect(struct socket *sock, struct sockaddr *addr,
+static int netlink_connect(struct socket *sock, struct sockaddr_unsized *addr,
                           int alen, int flags)
 {
        int err = 0;
index 33468124d53db6054e4fa174719fef08ba13985b..5ed1a71ceec1e23b46b34ee491de086fa5e0b332 100644 (file)
@@ -632,8 +632,8 @@ static int nr_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr
        return 0;
 }
 
-static int nr_connect(struct socket *sock, struct sockaddr *uaddr,
-       int addr_len, int flags)
+static int nr_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
+                     int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
        struct nr_sock *nr = nr_sk(sk);
index 26e6ceb48a82ea95522a533fd524c8a04052dee2..f1be1e84f665373483613068457341d2def5ee4f 100644 (file)
@@ -648,7 +648,7 @@ out:
        return err;
 }
 
-static int llcp_sock_connect(struct socket *sock, struct sockaddr *_addr,
+static int llcp_sock_connect(struct socket *sock, struct sockaddr_unsized *_addr,
                             int len, int flags)
 {
        struct sock *sk = sock->sk;
index 5125392bb68ebf083d1f82f70ab8670c0021906e..b049022399aea0361fb90e77d14c0727474e0688 100644 (file)
@@ -73,7 +73,7 @@ static int rawsock_release(struct socket *sock)
        return 0;
 }
 
-static int rawsock_connect(struct socket *sock, struct sockaddr *_addr,
+static int rawsock_connect(struct socket *sock, struct sockaddr_unsized *_addr,
                           int len, int flags)
 {
        struct sock *sk = sock->sk;
index 478b026477335976c74caddf3125d71b72963067..9391378083a410252988f6474e46d35b783fc169 100644 (file)
@@ -214,8 +214,8 @@ static int pn_socket_autobind(struct socket *sock)
        return 0; /* socket was already bound */
 }
 
-static int pn_socket_connect(struct socket *sock, struct sockaddr *addr,
-               int len, int flags)
+static int pn_socket_connect(struct socket *sock, struct sockaddr_unsized *addr,
+                            int len, int flags)
 {
        struct sock *sk = sock->sk;
        struct pn_sock *pn = pn_sk(sk);
@@ -252,7 +252,7 @@ static int pn_socket_connect(struct socket *sock, struct sockaddr *addr,
        pn->resource = pn_sockaddr_get_resource(spn);
        sock->state = SS_CONNECTING;
 
-       err = sk->sk_prot->connect(sk, addr, len);
+       err = sk->sk_prot->connect(sk, (struct sockaddr *)addr, len);
        if (err) {
                sock->state = SS_UNCONNECTED;
                pn->dobject = 0;
index 00bd3dd9f0f952ed1eb499f397ff19dd1aab3d13..dab839f61ee93b876021d904ae6b8dca8ed43745 100644 (file)
@@ -1084,7 +1084,7 @@ out:
        return rc;
 }
 
-static int qrtr_connect(struct socket *sock, struct sockaddr *saddr,
+static int qrtr_connect(struct socket *sock, struct sockaddr_unsized *saddr,
                        int len, int flags)
 {
        DECLARE_SOCKADDR(struct sockaddr_qrtr *, addr, saddr);
index 4a7217fbeab6f5bfff622fe4b245f22f474e64f9..b396c673dfaf62166b58a6dce9d3e64b60309ade 100644 (file)
@@ -533,7 +533,7 @@ out:
 
 }
 
-static int rds_connect(struct socket *sock, struct sockaddr *uaddr,
+static int rds_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                       int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
index 1eff3b03ab77494277f75649510d86999e31d39b..92891b0d224d393d5c3624b783cb4487ac516f55 100644 (file)
@@ -173,7 +173,7 @@ int rds_tcp_conn_path_connect(struct rds_conn_path *cp)
         * own the socket
         */
        rds_tcp_set_callbacks(sock, cp);
-       ret = kernel_connect(sock, addr, addrlen, O_NONBLOCK);
+       ret = kernel_connect(sock, (struct sockaddr_unsized *)addr, addrlen, O_NONBLOCK);
 
        rdsdebug("connect to address %pI6c returned %d\n", &conn->c_faddr, ret);
        if (ret == -EINPROGRESS)
index 47369eab5aecb448e9baff16705319d082da0d77..fd67494f2815ea28b948be96276430feb01add15 100644 (file)
@@ -765,7 +765,8 @@ out_release:
        return err;
 }
 
-static int rose_connect(struct socket *sock, struct sockaddr *uaddr, int addr_len, int flags)
+static int rose_connect(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len,
+                       int flags)
 {
        struct sock *sk = sock->sk;
        struct rose_sock *rose = rose_sk(sk);
index 245f37a7439438f3e4c09ca9010d420f44e2e180..0c2c68c4b07e48c54b71cc08fdf051a1d3f05205 100644 (file)
@@ -481,7 +481,7 @@ EXPORT_SYMBOL(rxrpc_kernel_set_notifications);
  * - this just targets it at a specific destination; no actual connection
  *   negotiation takes place
  */
-static int rxrpc_connect(struct socket *sock, struct sockaddr *addr,
+static int rxrpc_connect(struct socket *sock, struct sockaddr_unsized *addr,
                         int addr_len, int flags)
 {
        struct sockaddr_rxrpc *srx = (struct sockaddr_rxrpc *)addr;
index ac737e60829b94df99849032265185efab994a16..940abbced191d42b32c0de45a5207a158488992a 100644 (file)
@@ -4820,7 +4820,7 @@ static int sctp_connect(struct sock *sk, struct sockaddr *addr,
        return err;
 }
 
-int sctp_inet_connect(struct socket *sock, struct sockaddr *uaddr,
+int sctp_inet_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                      int addr_len, int flags)
 {
        if (addr_len < sizeof(uaddr->sa_family))
@@ -4829,7 +4829,7 @@ int sctp_inet_connect(struct socket *sock, struct sockaddr *uaddr,
        if (uaddr->sa_family == AF_UNSPEC)
                return -EOPNOTSUPP;
 
-       return sctp_connect(sock->sk, uaddr, addr_len, flags);
+       return sctp_connect(sock->sk, (struct sockaddr *)uaddr, addr_len, flags);
 }
 
 /* Only called when shutdown a listening SCTP socket. */
index be18ab08f15d6ea7d1bcf9390100eea543a6d421..0ef3e16a8517a8753491915e13a1d8b0c2c25fc6 100644 (file)
@@ -1642,7 +1642,7 @@ out:
        release_sock(&smc->sk);
 }
 
-int smc_connect(struct socket *sock, struct sockaddr *addr,
+int smc_connect(struct socket *sock, struct sockaddr_unsized *addr,
                int alen, int flags)
 {
        struct sock *sk = sock->sk;
@@ -1694,7 +1694,7 @@ int smc_connect(struct socket *sock, struct sockaddr *addr,
                rc = -EALREADY;
                goto out;
        }
-       rc = kernel_connect(smc->clcsock, addr, alen, flags);
+       rc = kernel_connect(smc->clcsock, (struct sockaddr_unsized *)addr, alen, flags);
        if (rc && rc != -EINPROGRESS)
                goto out;
 
index a008dbe6d6f63c8b87ef29722009b3101fc386cd..9e6af72784baa8222e8f1e29a8c5c21ab29a246a 100644 (file)
@@ -44,7 +44,7 @@ void smc_release_cb(struct sock *sk);
 int smc_release(struct socket *sock);
 int smc_bind(struct socket *sock, struct sockaddr_unsized *uaddr,
             int addr_len);
-int smc_connect(struct socket *sock, struct sockaddr *addr,
+int smc_connect(struct socket *sock, struct sockaddr_unsized *addr,
                int alen, int flags);
 int smc_accept(struct socket *sock, struct socket *new_sock,
               struct proto_accept_arg *arg);
index aaefb2e519a743cbfbd4b96ee88648f216699542..101a7ed574e75a12558aabab8696a4bb7b75c46f 100644 (file)
@@ -2099,8 +2099,8 @@ int __sys_connect_file(struct file *file, struct sockaddr_storage *address,
        if (err)
                goto out;
 
-       err = READ_ONCE(sock->ops)->connect(sock, (struct sockaddr *)address,
-                               addrlen, sock->file->f_flags | file_flags);
+       err = READ_ONCE(sock->ops)->connect(sock, (struct sockaddr_unsized *)address,
+                                           addrlen, sock->file->f_flags | file_flags);
 out:
        return err;
 }
@@ -3662,14 +3662,14 @@ EXPORT_SYMBOL(kernel_accept);
  *     Returns 0 or an error code.
  */
 
-int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,
+int kernel_connect(struct socket *sock, struct sockaddr_unsized *addr, int addrlen,
                   int flags)
 {
        struct sockaddr_storage address;
 
        memcpy(&address, addr, addrlen);
 
-       return READ_ONCE(sock->ops)->connect(sock, (struct sockaddr *)&address,
+       return READ_ONCE(sock->ops)->connect(sock, (struct sockaddr_unsized *)&address,
                                             addrlen, flags);
 }
 EXPORT_SYMBOL(kernel_connect);
index 318ee24ad900a3678b3d70b8e3fab288035e689d..58442ae1c2da2c818024e97b0b1a984956d40637 100644 (file)
@@ -1474,7 +1474,7 @@ static int rpc_sockname(struct net *net, struct sockaddr *sap, size_t salen,
                goto out_release;
        }
 
-       err = kernel_connect(sock, sap, salen, 0);
+       err = kernel_connect(sock, (struct sockaddr_unsized *)sap, salen, 0);
        if (err < 0) {
                dprintk("RPC:       can't connect UDP socket (%d)\n", err);
                goto out_release;
index 95732a45b059b51a9a8dd479935adb6014eb5c95..2e1fe601336151d50b936afbb5df1114ffb07551 100644 (file)
@@ -2005,7 +2005,7 @@ static int xs_local_finish_connecting(struct rpc_xprt *xprt,
 
        xs_stream_start_connect(transport);
 
-       return kernel_connect(sock, xs_addr(xprt), xprt->addrlen, 0);
+       return kernel_connect(sock, (struct sockaddr_unsized *)xs_addr(xprt), xprt->addrlen, 0);
 }
 
 /**
@@ -2405,7 +2405,8 @@ static int xs_tcp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock)
 
        /* Tell the socket layer to start connecting... */
        set_bit(XPRT_SOCK_CONNECTING, &transport->sock_state);
-       return kernel_connect(sock, xs_addr(xprt), xprt->addrlen, O_NONBLOCK);
+       return kernel_connect(sock, (struct sockaddr_unsized *)xs_addr(xprt),
+                             xprt->addrlen, O_NONBLOCK);
 }
 
 /**
index 3903a97ada7d461e850a192c37e063f1c5f2e50d..817b07d95a91481e185b90b430e98af7703b904d 100644 (file)
@@ -2565,7 +2565,7 @@ static bool tipc_sockaddr_is_sane(struct sockaddr_tipc *addr)
  *
  * Return: 0 on success, errno otherwise
  */
-static int tipc_connect(struct socket *sock, struct sockaddr *dest,
+static int tipc_connect(struct socket *sock, struct sockaddr_unsized *dest,
                        int destlen, int flags)
 {
        struct sock *sk = sock->sk;
index 788775f0eea72d9dee3a517edf1cc95d217d7f62..3b44cadaed96b2bc4255794c9088f232e7d220dd 100644 (file)
@@ -844,7 +844,7 @@ out:
 
 static int unix_release(struct socket *);
 static int unix_bind(struct socket *, struct sockaddr_unsized *, int);
-static int unix_stream_connect(struct socket *, struct sockaddr *,
+static int unix_stream_connect(struct socket *, struct sockaddr_unsized *,
                               int addr_len, int flags);
 static int unix_socketpair(struct socket *, struct socket *);
 static int unix_accept(struct socket *, struct socket *, struct proto_accept_arg *arg);
@@ -866,7 +866,7 @@ static int unix_dgram_sendmsg(struct socket *, struct msghdr *, size_t);
 static int unix_dgram_recvmsg(struct socket *, struct msghdr *, size_t, int);
 static int unix_read_skb(struct sock *sk, skb_read_actor_t recv_actor);
 static int unix_stream_read_skb(struct sock *sk, skb_read_actor_t recv_actor);
-static int unix_dgram_connect(struct socket *, struct sockaddr *,
+static int unix_dgram_connect(struct socket *, struct sockaddr_unsized *,
                              int, int);
 static int unix_seqpacket_sendmsg(struct socket *, struct msghdr *, size_t);
 static int unix_seqpacket_recvmsg(struct socket *, struct msghdr *, size_t,
@@ -1512,7 +1512,7 @@ static void unix_state_double_unlock(struct sock *sk1, struct sock *sk2)
        unix_state_unlock(sk2);
 }
 
-static int unix_dgram_connect(struct socket *sock, struct sockaddr *addr,
+static int unix_dgram_connect(struct socket *sock, struct sockaddr_unsized *addr,
                              int alen, int flags)
 {
        struct sockaddr_un *sunaddr = (struct sockaddr_un *)addr;
@@ -1631,7 +1631,7 @@ static long unix_wait_for_peer(struct sock *other, long timeo)
        return timeo;
 }
 
-static int unix_stream_connect(struct socket *sock, struct sockaddr *uaddr,
+static int unix_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                               int addr_len, int flags)
 {
        struct sockaddr_un *sunaddr = (struct sockaddr_un *)uaddr;
index 0e5609e7284bbdd26e6afd421ba724f75836e4b3..72bb6b7ed386b4007bb53c6c519fe21b96fc9927 100644 (file)
@@ -995,7 +995,7 @@ vsock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len)
 
        sk = sock->sk;
 
-       if (vsock_addr_cast((struct sockaddr *)addr, addr_len, &vm_addr) != 0)
+       if (vsock_addr_cast(addr, addr_len, &vm_addr) != 0)
                return -EINVAL;
 
        lock_sock(sk);
@@ -1328,7 +1328,7 @@ out:
 }
 
 static int vsock_dgram_connect(struct socket *sock,
-                              struct sockaddr *addr, int addr_len, int flags)
+                              struct sockaddr_unsized *addr, int addr_len, int flags)
 {
        int err;
        struct sock *sk;
@@ -1528,7 +1528,7 @@ static void vsock_connect_timeout(struct work_struct *work)
        sock_put(sk);
 }
 
-static int vsock_connect(struct socket *sock, struct sockaddr *addr,
+static int vsock_connect(struct socket *sock, struct sockaddr_unsized *addr,
                         int addr_len, int flags)
 {
        int err;
index 223b9660a759f69791464a1a7b88e597ccb16e44..a986aa6fff9bb6bbabf5ac88b2f4f447e6f56b00 100644 (file)
@@ -57,7 +57,7 @@ bool vsock_addr_equals_addr(const struct sockaddr_vm *addr,
 }
 EXPORT_SYMBOL_GPL(vsock_addr_equals_addr);
 
-int vsock_addr_cast(const struct sockaddr *addr,
+int vsock_addr_cast(const struct sockaddr_unsized *addr,
                    size_t len, struct sockaddr_vm **out_addr)
 {
        if (len < sizeof(**out_addr))
index ca8006d8f7929afb339c9e8bb2cf0be4f7d5595d..af8762b24039dab6bd79def38990d72226be5ef1 100644 (file)
@@ -743,7 +743,7 @@ static int x25_wait_for_connection_establishment(struct sock *sk)
        return rc;
 }
 
-static int x25_connect(struct socket *sock, struct sockaddr *uaddr,
+static int x25_connect(struct socket *sock, struct sockaddr_unsized *uaddr,
                       int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
index b27d861f354f5a6aa326100afb0823e822aaa97c..d1814582319bc43e3cdc3400efbe9fd4f704736f 100644 (file)
@@ -468,7 +468,7 @@ static int qmi_sample_probe(struct platform_device *pdev)
                return ret;
 
        sq = dev_get_platdata(&pdev->dev);
-       ret = kernel_connect(sample->qmi.sock, (struct sockaddr *)sq,
+       ret = kernel_connect(sample->qmi.sock, (struct sockaddr_unsized *)sq,
                             sizeof(*sq), 0);
        if (ret < 0) {
                pr_err("failed to connect to remote service port\n");
index 0497b5dea25c0775bcd4174a9c8a922cba2a564b..8eeebaa951f03b85a2d76e40b2972359cf7cb491 100644 (file)
@@ -900,7 +900,7 @@ __bpf_kfunc int bpf_kfunc_call_kernel_connect(struct addr_args *args)
                goto out;
        }
 
-       err = kernel_connect(sock, (struct sockaddr *)&args->addr,
+       err = kernel_connect(sock, (struct sockaddr_unsized *)&args->addr,
                             args->addrlen, 0);
 out:
        mutex_unlock(&sock_lock);