Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: Convert proto_ops connect() callbacks to use sockaddr_unsized

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>

authored by

Kees Cook and committed by
Jakub Kicinski
85cb0757 0e50474f

+110 -106
+1 -1
drivers/block/drbd/drbd_receiver.c
··· 458 458 * stay C_WF_CONNECTION, don't go Disconnecting! */ 459 459 disconnect_on_error = 0; 460 460 what = "connect"; 461 - err = sock->ops->connect(sock, (struct sockaddr *) &peer_in6, peer_addr_len, 0); 461 + err = sock->ops->connect(sock, (struct sockaddr_unsized *) &peer_in6, peer_addr_len, 0); 462 462 463 463 out: 464 464 if (err < 0) {
+1 -1
drivers/infiniband/hw/erdma/erdma_cm.c
··· 996 996 ret = s->ops->bind(s, (struct sockaddr_unsized *)laddr, laddrlen); 997 997 if (ret) 998 998 return ret; 999 - ret = s->ops->connect(s, raddr, raddrlen, flags); 999 + ret = s->ops->connect(s, (struct sockaddr_unsized *)raddr, raddrlen, flags); 1000 1000 return ret < 0 ? ret : 0; 1001 1001 } 1002 1002
+1 -1
drivers/infiniband/sw/siw/siw_cm.c
··· 1344 1344 if (rv < 0) 1345 1345 return rv; 1346 1346 1347 - rv = s->ops->connect(s, raddr, size, flags); 1347 + rv = s->ops->connect(s, (struct sockaddr_unsized *)raddr, size, flags); 1348 1348 1349 1349 return rv < 0 ? rv : 0; 1350 1350 }
+2 -2
drivers/net/ppp/pppoe.c
··· 608 608 return 0; 609 609 } 610 610 611 - static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr, 612 - int sockaddr_len, int flags) 611 + static int pppoe_connect(struct socket *sock, struct sockaddr_unsized *uservaddr, 612 + int sockaddr_len, int flags) 613 613 { 614 614 struct sock *sk = sock->sk; 615 615 struct sockaddr_pppox *sp = (struct sockaddr_pppox *)uservaddr;
+2 -2
drivers/net/ppp/pptp.c
··· 415 415 return error; 416 416 } 417 417 418 - static int pptp_connect(struct socket *sock, struct sockaddr *uservaddr, 419 - int sockaddr_len, int flags) 418 + static int pptp_connect(struct socket *sock, struct sockaddr_unsized *uservaddr, 419 + int sockaddr_len, int flags) 420 420 { 421 421 struct sock *sk = sock->sk; 422 422 struct sockaddr_pppox *sp = (struct sockaddr_pppox *) uservaddr;
+1 -1
drivers/net/wireless/ath/ath10k/qmi.c
··· 986 986 987 987 ath10k_dbg(ar, ATH10K_DBG_QMI, "wifi fw qmi service found\n"); 988 988 989 - ret = kernel_connect(qmi_hdl->sock, (struct sockaddr *)&qmi->sq, 989 + ret = kernel_connect(qmi_hdl->sock, (struct sockaddr_unsized *)&qmi->sq, 990 990 sizeof(qmi->sq), 0); 991 991 if (ret) { 992 992 ath10k_err(ar, "failed to connect to a remote QMI service port\n");
+1 -1
drivers/net/wireless/ath/ath11k/qmi.c
··· 3177 3177 sq->sq_node = service->node; 3178 3178 sq->sq_port = service->port; 3179 3179 3180 - ret = kernel_connect(qmi_hdl->sock, (struct sockaddr *)sq, 3180 + ret = kernel_connect(qmi_hdl->sock, (struct sockaddr_unsized *)sq, 3181 3181 sizeof(*sq), 0); 3182 3182 if (ret) { 3183 3183 ath11k_warn(ab, "failed to connect to qmi remote service: %d\n", ret);
+1 -1
drivers/net/wireless/ath/ath12k/qmi.c
··· 3740 3740 sq->sq_node = service->node; 3741 3741 sq->sq_port = service->port; 3742 3742 3743 - ret = kernel_connect(qmi_hdl->sock, (struct sockaddr *)sq, 3743 + ret = kernel_connect(qmi_hdl->sock, (struct sockaddr_unsized *)sq, 3744 3744 sizeof(*sq), 0); 3745 3745 if (ret) { 3746 3746 ath12k_warn(ab, "qmi failed to connect to remote service %d\n", ret);
+1 -1
drivers/nvme/host/tcp.c
··· 1872 1872 dev_dbg(nctrl->device, "connecting queue %d\n", 1873 1873 nvme_tcp_queue_id(queue)); 1874 1874 1875 - ret = kernel_connect(queue->sock, (struct sockaddr *)&ctrl->addr, 1875 + ret = kernel_connect(queue->sock, (struct sockaddr_unsized *)&ctrl->addr, 1876 1876 sizeof(ctrl->addr), 0); 1877 1877 if (ret) { 1878 1878 dev_err(nctrl->device,
+1 -1
drivers/slimbus/qcom-ngd-ctrl.c
··· 463 463 } 464 464 465 465 rc = kernel_connect(handle->sock, 466 - (struct sockaddr *)&ctrl->qmi.svc_info, 466 + (struct sockaddr_unsized *)&ctrl->qmi.svc_info, 467 467 sizeof(ctrl->qmi.svc_info), 0); 468 468 if (rc < 0) { 469 469 dev_err(ctrl->dev, "Remote Service connect failed: %d\n", rc);
+1 -1
drivers/xen/pvcalls-back.c
··· 409 409 ret = sock_create(AF_INET, SOCK_STREAM, 0, &sock); 410 410 if (ret < 0) 411 411 goto out; 412 - ret = inet_stream_connect(sock, sa, req->u.connect.len, 0); 412 + ret = inet_stream_connect(sock, (struct sockaddr_unsized *)sa, req->u.connect.len, 0); 413 413 if (ret < 0) { 414 414 sock_release(sock); 415 415 goto out;
+1 -1
fs/coredump.c
··· 708 708 */ 709 709 pidfs_coredump(cprm); 710 710 711 - retval = kernel_connect(socket, (struct sockaddr *)(&addr), addr_len, 711 + retval = kernel_connect(socket, (struct sockaddr_unsized *)(&addr), addr_len, 712 712 O_NONBLOCK | SOCK_COREDUMP); 713 713 714 714 if (retval) {
+1 -1
fs/dlm/lowcomms.c
··· 1599 1599 1600 1600 log_print_ratelimited("connecting to %d", con->nodeid); 1601 1601 make_sockaddr(&addr, dlm_config.ci_tcp_port, &addr_len); 1602 - result = kernel_connect(sock, (struct sockaddr *)&addr, addr_len, 0); 1602 + result = kernel_connect(sock, (struct sockaddr_unsized *)&addr, addr_len, 0); 1603 1603 switch (result) { 1604 1604 case -EINPROGRESS: 1605 1605 /* not an error */
+1 -1
fs/ocfs2/cluster/tcp.c
··· 1638 1638 remoteaddr.sin_port = node->nd_ipv4_port; 1639 1639 1640 1640 ret = sc->sc_sock->ops->connect(sc->sc_sock, 1641 - (struct sockaddr *)&remoteaddr, 1641 + (struct sockaddr_unsized *)&remoteaddr, 1642 1642 sizeof(remoteaddr), 1643 1643 O_NONBLOCK); 1644 1644 if (ret == -EINPROGRESS)
+1 -1
fs/smb/client/connect.c
··· 3411 3411 socket->sk->sk_sndbuf, 3412 3412 socket->sk->sk_rcvbuf, socket->sk->sk_rcvtimeo); 3413 3413 3414 - rc = kernel_connect(socket, saddr, slen, 3414 + rc = kernel_connect(socket, (struct sockaddr_unsized *)saddr, slen, 3415 3415 server->noblockcnt ? O_NONBLOCK : 0); 3416 3416 /* 3417 3417 * When mounting SMB root file systems, we do not want to block in
+3 -3
include/linux/bpf-cgroup.h
··· 238 238 ({ \ 239 239 int __ret = 0; \ 240 240 if (cgroup_bpf_enabled(atype)) \ 241 - __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \ 241 + __ret = __cgroup_bpf_run_filter_sock_addr(sk, (struct sockaddr *)uaddr, uaddrlen, \ 242 242 atype, NULL, NULL); \ 243 243 __ret; \ 244 244 }) ··· 248 248 int __ret = 0; \ 249 249 if (cgroup_bpf_enabled(atype)) { \ 250 250 lock_sock(sk); \ 251 - __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \ 251 + __ret = __cgroup_bpf_run_filter_sock_addr(sk, (struct sockaddr *)uaddr, uaddrlen, \ 252 252 atype, t_ctx, NULL); \ 253 253 release_sock(sk); \ 254 254 } \ ··· 266 266 int __ret = 0; \ 267 267 if (cgroup_bpf_enabled(atype)) { \ 268 268 lock_sock(sk); \ 269 - __ret = __cgroup_bpf_run_filter_sock_addr(sk, uaddr, uaddrlen, \ 269 + __ret = __cgroup_bpf_run_filter_sock_addr(sk, (struct sockaddr *)uaddr, uaddrlen, \ 270 270 atype, NULL, &__flags); \ 271 271 release_sock(sk); \ 272 272 if (__flags & BPF_RET_BIND_NO_CAP_NET_BIND_SERVICE) \
+2 -2
include/linux/net.h
··· 166 166 struct sockaddr_unsized *myaddr, 167 167 int sockaddr_len); 168 168 int (*connect) (struct socket *sock, 169 - struct sockaddr *vaddr, 169 + struct sockaddr_unsized *vaddr, 170 170 int sockaddr_len, int flags); 171 171 int (*socketpair)(struct socket *sock1, 172 172 struct socket *sock2); ··· 348 348 int kernel_bind(struct socket *sock, struct sockaddr_unsized *addr, int addrlen); 349 349 int kernel_listen(struct socket *sock, int backlog); 350 350 int kernel_accept(struct socket *sock, struct socket **newsock, int flags); 351 - int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen, 351 + int kernel_connect(struct socket *sock, struct sockaddr_unsized *addr, int addrlen, 352 352 int flags); 353 353 int kernel_getsockname(struct socket *sock, struct sockaddr *addr); 354 354 int kernel_getpeername(struct socket *sock, struct sockaddr *addr);
+3 -3
include/net/inet_common.h
··· 23 23 struct socket; 24 24 25 25 int inet_release(struct socket *sock); 26 - int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, 26 + int inet_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 27 27 int addr_len, int flags); 28 - int __inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, 28 + int __inet_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 29 29 int addr_len, int flags, int is_sendmsg); 30 - int inet_dgram_connect(struct socket *sock, struct sockaddr *uaddr, 30 + int inet_dgram_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 31 31 int addr_len, int flags); 32 32 int inet_accept(struct socket *sock, struct socket *newsock, 33 33 struct proto_accept_arg *arg);
+1 -1
include/net/sctp/sctp.h
··· 85 85 /* 86 86 * sctp/socket.c 87 87 */ 88 - int sctp_inet_connect(struct socket *sock, struct sockaddr *uaddr, 88 + int sctp_inet_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 89 89 int addr_len, int flags); 90 90 int sctp_backlog_rcv(struct sock *sk, struct sk_buff *skb); 91 91 int sctp_inet_listen(struct socket *sock, int backlog);
+1 -1
include/net/sock.h
··· 1921 1921 * does not implement a particular function. 1922 1922 */ 1923 1923 int sock_no_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len); 1924 - int sock_no_connect(struct socket *, struct sockaddr *, int, int); 1924 + int sock_no_connect(struct socket *sock, struct sockaddr_unsized *saddr, int len, int flags); 1925 1925 int sock_no_socketpair(struct socket *, struct socket *); 1926 1926 int sock_no_accept(struct socket *, struct socket *, struct proto_accept_arg *); 1927 1927 int sock_no_getname(struct socket *, struct sockaddr *, int);
+1 -1
include/net/vsock_addr.h
··· 16 16 void vsock_addr_unbind(struct sockaddr_vm *addr); 17 17 bool vsock_addr_equals_addr(const struct sockaddr_vm *addr, 18 18 const struct sockaddr_vm *other); 19 - int vsock_addr_cast(const struct sockaddr *addr, size_t len, 19 + int vsock_addr_cast(const struct sockaddr_unsized *addr, size_t len, 20 20 struct sockaddr_vm **out_addr); 21 21 22 22 #endif
+3 -3
net/9p/trans_fd.c
··· 1018 1018 } 1019 1019 1020 1020 err = READ_ONCE(csocket->ops)->connect(csocket, 1021 - (struct sockaddr *)&stor, 1021 + (struct sockaddr_unsized *)&stor, 1022 1022 sizeof(stor), 0); 1023 1023 if (err < 0) { 1024 1024 pr_err("%s (%d): problem connecting socket to %s\n", ··· 1058 1058 1059 1059 return err; 1060 1060 } 1061 - err = READ_ONCE(csocket->ops)->connect(csocket, (struct sockaddr *)&sun_server, 1062 - sizeof(struct sockaddr_un) - 1, 0); 1061 + err = READ_ONCE(csocket->ops)->connect(csocket, (struct sockaddr_unsized *)&sun_server, 1062 + sizeof(struct sockaddr_un) - 1, 0); 1063 1063 if (err < 0) { 1064 1064 pr_err("%s (%d): problem connecting socket: %s: %d\n", 1065 1065 __func__, task_pid_nr(current), addr, err);
+1 -1
net/appletalk/ddp.c
··· 1204 1204 } 1205 1205 1206 1206 /* Set the address we talk to */ 1207 - static int atalk_connect(struct socket *sock, struct sockaddr *uaddr, 1207 + static int atalk_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 1208 1208 int addr_len, int flags) 1209 1209 { 1210 1210 struct sock *sk = sock->sk;
+2 -2
net/atm/pvc.c
··· 56 56 return error; 57 57 } 58 58 59 - static int pvc_connect(struct socket *sock, struct sockaddr *sockaddr, 59 + static int pvc_connect(struct socket *sock, struct sockaddr_unsized *sockaddr, 60 60 int sockaddr_len, int flags) 61 61 { 62 - return pvc_bind(sock, (struct sockaddr_unsized *)sockaddr, sockaddr_len); 62 + return pvc_bind(sock, sockaddr, sockaddr_len); 63 63 } 64 64 65 65 static int pvc_setsockopt(struct socket *sock, int level, int optname,
+1 -1
net/atm/svc.c
··· 153 153 return error; 154 154 } 155 155 156 - static int svc_connect(struct socket *sock, struct sockaddr *sockaddr, 156 + static int svc_connect(struct socket *sock, struct sockaddr_unsized *sockaddr, 157 157 int sockaddr_len, int flags) 158 158 { 159 159 DEFINE_WAIT(wait);
+1 -1
net/ax25/af_ax25.c
··· 1175 1175 * FIXME: nonblock behaviour looks like it may have a bug. 1176 1176 */ 1177 1177 static int __must_check ax25_connect(struct socket *sock, 1178 - struct sockaddr *uaddr, int addr_len, int flags) 1178 + struct sockaddr_unsized *uaddr, int addr_len, int flags) 1179 1179 { 1180 1180 struct sock *sk = sock->sk; 1181 1181 ax25_cb *ax25 = sk_to_ax25(sk), *ax25t;
+1 -1
net/bluetooth/iso.c
··· 1080 1080 return err; 1081 1081 } 1082 1082 1083 - static int iso_sock_connect(struct socket *sock, struct sockaddr *addr, 1083 + static int iso_sock_connect(struct socket *sock, struct sockaddr_unsized *addr, 1084 1084 int alen, int flags) 1085 1085 { 1086 1086 struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
+1 -1
net/bluetooth/l2cap_sock.c
··· 178 178 return err; 179 179 } 180 180 181 - static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, 181 + static int l2cap_sock_connect(struct socket *sock, struct sockaddr_unsized *addr, 182 182 int alen, int flags) 183 183 { 184 184 struct sock *sk = sock->sk;
+1 -1
net/bluetooth/rfcomm/core.c
··· 808 808 addr.l2_psm = cpu_to_le16(L2CAP_PSM_RFCOMM); 809 809 addr.l2_cid = 0; 810 810 addr.l2_bdaddr_type = BDADDR_BREDR; 811 - *err = kernel_connect(sock, (struct sockaddr *) &addr, sizeof(addr), O_NONBLOCK); 811 + *err = kernel_connect(sock, (struct sockaddr_unsized *)&addr, sizeof(addr), O_NONBLOCK); 812 812 if (*err == 0 || *err == -EINPROGRESS) 813 813 return s; 814 814
+2 -1
net/bluetooth/rfcomm/sock.c
··· 371 371 return err; 372 372 } 373 373 374 - static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags) 374 + static int rfcomm_sock_connect(struct socket *sock, struct sockaddr_unsized *addr, 375 + int alen, int flags) 375 376 { 376 377 struct sockaddr_rc *sa = (struct sockaddr_rc *) addr; 377 378 struct sock *sk = sock->sk;
+1 -1
net/bluetooth/sco.c
··· 639 639 return err; 640 640 } 641 641 642 - static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags) 642 + static int sco_sock_connect(struct socket *sock, struct sockaddr_unsized *addr, int alen, int flags) 643 643 { 644 644 struct sockaddr_sco *sa = (struct sockaddr_sco *) addr; 645 645 struct sock *sk = sock->sk;
+1 -1
net/caif/caif_socket.c
··· 734 734 * o sock->state: holds the SS_* socket state and is updated by connect and 735 735 * disconnect. 736 736 */ 737 - static int caif_connect(struct socket *sock, struct sockaddr *uaddr, 737 + static int caif_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 738 738 int addr_len, int flags) 739 739 { 740 740 struct sock *sk = sock->sk;
+1 -1
net/can/bcm.c
··· 1657 1657 return 0; 1658 1658 } 1659 1659 1660 - static int bcm_connect(struct socket *sock, struct sockaddr *uaddr, int len, 1660 + static int bcm_connect(struct socket *sock, struct sockaddr_unsized *uaddr, int len, 1661 1661 int flags) 1662 1662 { 1663 1663 struct sockaddr_can *addr = (struct sockaddr_can *)uaddr;
+1 -1
net/can/j1939/socket.c
··· 535 535 return ret; 536 536 } 537 537 538 - static int j1939_sk_connect(struct socket *sock, struct sockaddr *uaddr, 538 + static int j1939_sk_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 539 539 int len, int flags) 540 540 { 541 541 struct sockaddr_can *addr = (struct sockaddr_can *)uaddr;
+1 -1
net/ceph/messenger.c
··· 460 460 set_sock_callbacks(sock, con); 461 461 462 462 con_sock_state_connecting(con); 463 - ret = kernel_connect(sock, (struct sockaddr *)&ss, sizeof(ss), 463 + ret = kernel_connect(sock, (struct sockaddr_unsized *)&ss, sizeof(ss), 464 464 O_NONBLOCK); 465 465 if (ret == -EINPROGRESS) { 466 466 dout("connect %s EINPROGRESS sk_state = %u\n",
+1 -1
net/core/sock.c
··· 3468 3468 } 3469 3469 EXPORT_SYMBOL(sock_no_bind); 3470 3470 3471 - int sock_no_connect(struct socket *sock, struct sockaddr *saddr, 3471 + int sock_no_connect(struct socket *sock, struct sockaddr_unsized *saddr, 3472 3472 int len, int flags) 3473 3473 { 3474 3474 return -EOPNOTSUPP;
+2 -2
net/ieee802154/socket.c
··· 107 107 return sock_no_bind(sock, uaddr, addr_len); 108 108 } 109 109 110 - static int ieee802154_sock_connect(struct socket *sock, struct sockaddr *uaddr, 110 + static int ieee802154_sock_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 111 111 int addr_len, int flags) 112 112 { 113 113 struct sock *sk = sock->sk; ··· 118 118 if (uaddr->sa_family == AF_UNSPEC) 119 119 return sk->sk_prot->disconnect(sk, flags); 120 120 121 - return sk->sk_prot->connect(sk, uaddr, addr_len); 121 + return sk->sk_prot->connect(sk, (struct sockaddr *)uaddr, addr_len); 122 122 } 123 123 124 124 static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg,
+7 -7
net/ipv4/af_inet.c
··· 567 567 return err; 568 568 } 569 569 570 - int inet_dgram_connect(struct socket *sock, struct sockaddr *uaddr, 570 + int inet_dgram_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 571 571 int addr_len, int flags) 572 572 { 573 573 struct sock *sk = sock->sk; ··· 584 584 return prot->disconnect(sk, flags); 585 585 586 586 if (BPF_CGROUP_PRE_CONNECT_ENABLED(sk)) { 587 - err = prot->pre_connect(sk, uaddr, addr_len); 587 + err = prot->pre_connect(sk, (struct sockaddr *)uaddr, addr_len); 588 588 if (err) 589 589 return err; 590 590 } 591 591 592 592 if (data_race(!inet_sk(sk)->inet_num) && inet_autobind(sk)) 593 593 return -EAGAIN; 594 - return prot->connect(sk, uaddr, addr_len); 594 + return prot->connect(sk, (struct sockaddr *)uaddr, addr_len); 595 595 } 596 596 EXPORT_SYMBOL(inet_dgram_connect); 597 597 ··· 623 623 * Connect to a remote host. There is regrettably still a little 624 624 * TCP 'magic' in here. 625 625 */ 626 - int __inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, 626 + int __inet_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 627 627 int addr_len, int flags, int is_sendmsg) 628 628 { 629 629 struct sock *sk = sock->sk; ··· 671 671 goto out; 672 672 673 673 if (BPF_CGROUP_PRE_CONNECT_ENABLED(sk)) { 674 - err = sk->sk_prot->pre_connect(sk, uaddr, addr_len); 674 + err = sk->sk_prot->pre_connect(sk, (struct sockaddr *)uaddr, addr_len); 675 675 if (err) 676 676 goto out; 677 677 } 678 678 679 - err = sk->sk_prot->connect(sk, uaddr, addr_len); 679 + err = sk->sk_prot->connect(sk, (struct sockaddr *)uaddr, addr_len); 680 680 if (err < 0) 681 681 goto out; 682 682 ··· 741 741 } 742 742 EXPORT_SYMBOL(__inet_stream_connect); 743 743 744 - int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr, 744 + int inet_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 745 745 int addr_len, int flags) 746 746 { 747 747 int err;
+1 -1
net/ipv4/tcp.c
··· 1061 1061 } 1062 1062 } 1063 1063 flags = (msg->msg_flags & MSG_DONTWAIT) ? O_NONBLOCK : 0; 1064 - err = __inet_stream_connect(sk->sk_socket, uaddr, 1064 + err = __inet_stream_connect(sk->sk_socket, (struct sockaddr_unsized *)uaddr, 1065 1065 msg->msg_namelen, flags, 1); 1066 1066 /* fastopen_req could already be freed in __inet_stream_connect 1067 1067 * if the connection times out or gets rst
+1 -1
net/ipv4/udp_tunnel_core.c
··· 38 38 udp_addr.sin_family = AF_INET; 39 39 udp_addr.sin_addr = cfg->peer_ip; 40 40 udp_addr.sin_port = cfg->peer_udp_port; 41 - err = kernel_connect(sock, (struct sockaddr *)&udp_addr, 41 + err = kernel_connect(sock, (struct sockaddr_unsized *)&udp_addr, 42 42 sizeof(udp_addr), 0); 43 43 if (err < 0) 44 44 goto error;
+1 -1
net/ipv6/ip6_udp_tunnel.c
··· 52 52 sizeof(udp6_addr.sin6_addr)); 53 53 udp6_addr.sin6_port = cfg->peer_udp_port; 54 54 err = kernel_connect(sock, 55 - (struct sockaddr *)&udp6_addr, 55 + (struct sockaddr_unsized *)&udp6_addr, 56 56 sizeof(udp6_addr), 0); 57 57 } 58 58 if (err < 0)
+2 -2
net/iucv/af_iucv.c
··· 668 668 return err; 669 669 } 670 670 671 - static int afiucv_path_connect(struct socket *sock, struct sockaddr *addr) 671 + static int afiucv_path_connect(struct socket *sock, struct sockaddr_unsized *addr) 672 672 { 673 673 DECLARE_SOCKADDR(struct sockaddr_iucv *, sa, addr); 674 674 struct sock *sk = sock->sk; ··· 714 714 } 715 715 716 716 /* Connect an unconnected socket */ 717 - static int iucv_sock_connect(struct socket *sock, struct sockaddr *addr, 717 + static int iucv_sock_connect(struct socket *sock, struct sockaddr_unsized *addr, 718 718 int alen, int flags) 719 719 { 720 720 DECLARE_SOCKADDR(struct sockaddr_iucv *, sa, addr);
+2 -2
net/l2tp/l2tp_core.c
··· 1513 1513 sizeof(ip6_addr.l2tp_addr)); 1514 1514 ip6_addr.l2tp_conn_id = peer_tunnel_id; 1515 1515 err = kernel_connect(sock, 1516 - (struct sockaddr *)&ip6_addr, 1516 + (struct sockaddr_unsized *)&ip6_addr, 1517 1517 sizeof(ip6_addr), 0); 1518 1518 if (err < 0) 1519 1519 goto out; ··· 1538 1538 ip_addr.l2tp_family = AF_INET; 1539 1539 ip_addr.l2tp_addr = cfg->peer_ip; 1540 1540 ip_addr.l2tp_conn_id = peer_tunnel_id; 1541 - err = kernel_connect(sock, (struct sockaddr *)&ip_addr, 1541 + err = kernel_connect(sock, (struct sockaddr_unsized *)&ip_addr, 1542 1542 sizeof(ip_addr), 0); 1543 1543 if (err < 0) 1544 1544 goto out;
+1 -1
net/l2tp/l2tp_ppp.c
··· 684 684 685 685 /* connect() handler. Attach a PPPoX socket to a tunnel UDP socket 686 686 */ 687 - static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr, 687 + static int pppol2tp_connect(struct socket *sock, struct sockaddr_unsized *uservaddr, 688 688 int sockaddr_len, int flags) 689 689 { 690 690 struct sock *sk = sock->sk;
+1 -1
net/llc/af_llc.c
··· 477 477 * This function will autobind if user did not previously call bind. 478 478 * Returns: 0 upon success, negative otherwise. 479 479 */ 480 - static int llc_ui_connect(struct socket *sock, struct sockaddr *uaddr, 480 + static int llc_ui_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 481 481 int addrlen, int flags) 482 482 { 483 483 struct sock *sk = sock->sk;
+1 -1
net/mctp/af_mctp.c
··· 128 128 /* Used to set a specific peer prior to bind. Not used for outbound 129 129 * connections (Tag Owner set) since MCTP is a datagram protocol. 130 130 */ 131 - static int mctp_connect(struct socket *sock, struct sockaddr *addr, 131 + static int mctp_connect(struct socket *sock, struct sockaddr_unsized *addr, 132 132 int addrlen, int flags) 133 133 { 134 134 struct sock *sk = sock->sk;
+3 -2
net/mctp/test/utils.c
··· 279 279 addr.smctp_addr.s_addr = setup->peer_addr; 280 280 /* connect() type must match bind() type */ 281 281 addr.smctp_type = setup->bind_type; 282 - rc = kernel_connect(*sock, (struct sockaddr *)&addr, 282 + rc = kernel_connect(*sock, (struct sockaddr_unsized *)&addr, 283 283 sizeof(addr), 0); 284 284 KUNIT_EXPECT_EQ(test, rc, 0); 285 285 } ··· 292 292 addr.smctp_type = setup->bind_type; 293 293 294 294 *ret_bind_errno = 295 - kernel_bind(*sock, (struct sockaddr *)&addr, sizeof(addr)); 295 + kernel_bind(*sock, (struct sockaddr_unsized *)&addr, 296 + sizeof(addr)); 296 297 }
+1 -1
net/mptcp/subflow.c
··· 1680 1680 1681 1681 sock_hold(ssk); 1682 1682 list_add_tail(&subflow->node, &msk->conn_list); 1683 - err = kernel_connect(sf, (struct sockaddr *)&addr, addrlen, O_NONBLOCK); 1683 + err = kernel_connect(sf, (struct sockaddr_unsized *)&addr, addrlen, O_NONBLOCK); 1684 1684 if (err && err != -EINPROGRESS) { 1685 1685 MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_JOINSYNTXCONNECTERR); 1686 1686 pr_debug("msk=%p local=%d remote=%d connect error: %d\n",
+1 -1
net/netfilter/ipvs/ip_vs_sync.c
··· 1501 1501 } 1502 1502 1503 1503 get_mcast_sockaddr(&mcast_addr, &salen, &ipvs->mcfg, id); 1504 - result = kernel_connect(sock, (struct sockaddr *)&mcast_addr, 1504 + result = kernel_connect(sock, (struct sockaddr_unsized *)&mcast_addr, 1505 1505 salen, 0); 1506 1506 if (result < 0) { 1507 1507 pr_err("Error connecting to the multicast addr\n");
+1 -1
net/netlink/af_netlink.c
··· 1054 1054 return err; 1055 1055 } 1056 1056 1057 - static int netlink_connect(struct socket *sock, struct sockaddr *addr, 1057 + static int netlink_connect(struct socket *sock, struct sockaddr_unsized *addr, 1058 1058 int alen, int flags) 1059 1059 { 1060 1060 int err = 0;
+2 -2
net/netrom/af_netrom.c
··· 632 632 return 0; 633 633 } 634 634 635 - static int nr_connect(struct socket *sock, struct sockaddr *uaddr, 636 - int addr_len, int flags) 635 + static int nr_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 636 + int addr_len, int flags) 637 637 { 638 638 struct sock *sk = sock->sk; 639 639 struct nr_sock *nr = nr_sk(sk);
+1 -1
net/nfc/llcp_sock.c
··· 648 648 return err; 649 649 } 650 650 651 - static int llcp_sock_connect(struct socket *sock, struct sockaddr *_addr, 651 + static int llcp_sock_connect(struct socket *sock, struct sockaddr_unsized *_addr, 652 652 int len, int flags) 653 653 { 654 654 struct sock *sk = sock->sk;
+1 -1
net/nfc/rawsock.c
··· 73 73 return 0; 74 74 } 75 75 76 - static int rawsock_connect(struct socket *sock, struct sockaddr *_addr, 76 + static int rawsock_connect(struct socket *sock, struct sockaddr_unsized *_addr, 77 77 int len, int flags) 78 78 { 79 79 struct sock *sk = sock->sk;
+3 -3
net/phonet/socket.c
··· 214 214 return 0; /* socket was already bound */ 215 215 } 216 216 217 - static int pn_socket_connect(struct socket *sock, struct sockaddr *addr, 218 - int len, int flags) 217 + static int pn_socket_connect(struct socket *sock, struct sockaddr_unsized *addr, 218 + int len, int flags) 219 219 { 220 220 struct sock *sk = sock->sk; 221 221 struct pn_sock *pn = pn_sk(sk); ··· 252 252 pn->resource = pn_sockaddr_get_resource(spn); 253 253 sock->state = SS_CONNECTING; 254 254 255 - err = sk->sk_prot->connect(sk, addr, len); 255 + err = sk->sk_prot->connect(sk, (struct sockaddr *)addr, len); 256 256 if (err) { 257 257 sock->state = SS_UNCONNECTED; 258 258 pn->dobject = 0;
+1 -1
net/qrtr/af_qrtr.c
··· 1084 1084 return rc; 1085 1085 } 1086 1086 1087 - static int qrtr_connect(struct socket *sock, struct sockaddr *saddr, 1087 + static int qrtr_connect(struct socket *sock, struct sockaddr_unsized *saddr, 1088 1088 int len, int flags) 1089 1089 { 1090 1090 DECLARE_SOCKADDR(struct sockaddr_qrtr *, addr, saddr);
+1 -1
net/rds/af_rds.c
··· 533 533 534 534 } 535 535 536 - static int rds_connect(struct socket *sock, struct sockaddr *uaddr, 536 + static int rds_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 537 537 int addr_len, int flags) 538 538 { 539 539 struct sock *sk = sock->sk;
+1 -1
net/rds/tcp_connect.c
··· 173 173 * own the socket 174 174 */ 175 175 rds_tcp_set_callbacks(sock, cp); 176 - ret = kernel_connect(sock, addr, addrlen, O_NONBLOCK); 176 + ret = kernel_connect(sock, (struct sockaddr_unsized *)addr, addrlen, O_NONBLOCK); 177 177 178 178 rdsdebug("connect to address %pI6c returned %d\n", &conn->c_faddr, ret); 179 179 if (ret == -EINPROGRESS)
+2 -1
net/rose/af_rose.c
··· 765 765 return err; 766 766 } 767 767 768 - static int rose_connect(struct socket *sock, struct sockaddr *uaddr, int addr_len, int flags) 768 + static int rose_connect(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len, 769 + int flags) 769 770 { 770 771 struct sock *sk = sock->sk; 771 772 struct rose_sock *rose = rose_sk(sk);
+1 -1
net/rxrpc/af_rxrpc.c
··· 481 481 * - this just targets it at a specific destination; no actual connection 482 482 * negotiation takes place 483 483 */ 484 - static int rxrpc_connect(struct socket *sock, struct sockaddr *addr, 484 + static int rxrpc_connect(struct socket *sock, struct sockaddr_unsized *addr, 485 485 int addr_len, int flags) 486 486 { 487 487 struct sockaddr_rxrpc *srx = (struct sockaddr_rxrpc *)addr;
+2 -2
net/sctp/socket.c
··· 4820 4820 return err; 4821 4821 } 4822 4822 4823 - int sctp_inet_connect(struct socket *sock, struct sockaddr *uaddr, 4823 + int sctp_inet_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 4824 4824 int addr_len, int flags) 4825 4825 { 4826 4826 if (addr_len < sizeof(uaddr->sa_family)) ··· 4829 4829 if (uaddr->sa_family == AF_UNSPEC) 4830 4830 return -EOPNOTSUPP; 4831 4831 4832 - return sctp_connect(sock->sk, uaddr, addr_len, flags); 4832 + return sctp_connect(sock->sk, (struct sockaddr *)uaddr, addr_len, flags); 4833 4833 } 4834 4834 4835 4835 /* Only called when shutdown a listening SCTP socket. */
+2 -2
net/smc/af_smc.c
··· 1642 1642 release_sock(&smc->sk); 1643 1643 } 1644 1644 1645 - int smc_connect(struct socket *sock, struct sockaddr *addr, 1645 + int smc_connect(struct socket *sock, struct sockaddr_unsized *addr, 1646 1646 int alen, int flags) 1647 1647 { 1648 1648 struct sock *sk = sock->sk; ··· 1694 1694 rc = -EALREADY; 1695 1695 goto out; 1696 1696 } 1697 - rc = kernel_connect(smc->clcsock, addr, alen, flags); 1697 + rc = kernel_connect(smc->clcsock, (struct sockaddr_unsized *)addr, alen, flags); 1698 1698 if (rc && rc != -EINPROGRESS) 1699 1699 goto out; 1700 1700
+1 -1
net/smc/smc.h
··· 44 44 int smc_release(struct socket *sock); 45 45 int smc_bind(struct socket *sock, struct sockaddr_unsized *uaddr, 46 46 int addr_len); 47 - int smc_connect(struct socket *sock, struct sockaddr *addr, 47 + int smc_connect(struct socket *sock, struct sockaddr_unsized *addr, 48 48 int alen, int flags); 49 49 int smc_accept(struct socket *sock, struct socket *new_sock, 50 50 struct proto_accept_arg *arg);
+4 -4
net/socket.c
··· 2099 2099 if (err) 2100 2100 goto out; 2101 2101 2102 - err = READ_ONCE(sock->ops)->connect(sock, (struct sockaddr *)address, 2103 - addrlen, sock->file->f_flags | file_flags); 2102 + err = READ_ONCE(sock->ops)->connect(sock, (struct sockaddr_unsized *)address, 2103 + addrlen, sock->file->f_flags | file_flags); 2104 2104 out: 2105 2105 return err; 2106 2106 } ··· 3662 3662 * Returns 0 or an error code. 3663 3663 */ 3664 3664 3665 - int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen, 3665 + int kernel_connect(struct socket *sock, struct sockaddr_unsized *addr, int addrlen, 3666 3666 int flags) 3667 3667 { 3668 3668 struct sockaddr_storage address; 3669 3669 3670 3670 memcpy(&address, addr, addrlen); 3671 3671 3672 - return READ_ONCE(sock->ops)->connect(sock, (struct sockaddr *)&address, 3672 + return READ_ONCE(sock->ops)->connect(sock, (struct sockaddr_unsized *)&address, 3673 3673 addrlen, flags); 3674 3674 } 3675 3675 EXPORT_SYMBOL(kernel_connect);
+1 -1
net/sunrpc/clnt.c
··· 1474 1474 goto out_release; 1475 1475 } 1476 1476 1477 - err = kernel_connect(sock, sap, salen, 0); 1477 + err = kernel_connect(sock, (struct sockaddr_unsized *)sap, salen, 0); 1478 1478 if (err < 0) { 1479 1479 dprintk("RPC: can't connect UDP socket (%d)\n", err); 1480 1480 goto out_release;
+3 -2
net/sunrpc/xprtsock.c
··· 2005 2005 2006 2006 xs_stream_start_connect(transport); 2007 2007 2008 - return kernel_connect(sock, xs_addr(xprt), xprt->addrlen, 0); 2008 + return kernel_connect(sock, (struct sockaddr_unsized *)xs_addr(xprt), xprt->addrlen, 0); 2009 2009 } 2010 2010 2011 2011 /** ··· 2405 2405 2406 2406 /* Tell the socket layer to start connecting... */ 2407 2407 set_bit(XPRT_SOCK_CONNECTING, &transport->sock_state); 2408 - return kernel_connect(sock, xs_addr(xprt), xprt->addrlen, O_NONBLOCK); 2408 + return kernel_connect(sock, (struct sockaddr_unsized *)xs_addr(xprt), 2409 + xprt->addrlen, O_NONBLOCK); 2409 2410 } 2410 2411 2411 2412 /**
+1 -1
net/tipc/socket.c
··· 2565 2565 * 2566 2566 * Return: 0 on success, errno otherwise 2567 2567 */ 2568 - static int tipc_connect(struct socket *sock, struct sockaddr *dest, 2568 + static int tipc_connect(struct socket *sock, struct sockaddr_unsized *dest, 2569 2569 int destlen, int flags) 2570 2570 { 2571 2571 struct sock *sk = sock->sk;
+4 -4
net/unix/af_unix.c
··· 844 844 845 845 static int unix_release(struct socket *); 846 846 static int unix_bind(struct socket *, struct sockaddr_unsized *, int); 847 - static int unix_stream_connect(struct socket *, struct sockaddr *, 847 + static int unix_stream_connect(struct socket *, struct sockaddr_unsized *, 848 848 int addr_len, int flags); 849 849 static int unix_socketpair(struct socket *, struct socket *); 850 850 static int unix_accept(struct socket *, struct socket *, struct proto_accept_arg *arg); ··· 866 866 static int unix_dgram_recvmsg(struct socket *, struct msghdr *, size_t, int); 867 867 static int unix_read_skb(struct sock *sk, skb_read_actor_t recv_actor); 868 868 static int unix_stream_read_skb(struct sock *sk, skb_read_actor_t recv_actor); 869 - static int unix_dgram_connect(struct socket *, struct sockaddr *, 869 + static int unix_dgram_connect(struct socket *, struct sockaddr_unsized *, 870 870 int, int); 871 871 static int unix_seqpacket_sendmsg(struct socket *, struct msghdr *, size_t); 872 872 static int unix_seqpacket_recvmsg(struct socket *, struct msghdr *, size_t, ··· 1512 1512 unix_state_unlock(sk2); 1513 1513 } 1514 1514 1515 - static int unix_dgram_connect(struct socket *sock, struct sockaddr *addr, 1515 + static int unix_dgram_connect(struct socket *sock, struct sockaddr_unsized *addr, 1516 1516 int alen, int flags) 1517 1517 { 1518 1518 struct sockaddr_un *sunaddr = (struct sockaddr_un *)addr; ··· 1631 1631 return timeo; 1632 1632 } 1633 1633 1634 - static int unix_stream_connect(struct socket *sock, struct sockaddr *uaddr, 1634 + static int unix_stream_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 1635 1635 int addr_len, int flags) 1636 1636 { 1637 1637 struct sockaddr_un *sunaddr = (struct sockaddr_un *)uaddr;
+3 -3
net/vmw_vsock/af_vsock.c
··· 995 995 996 996 sk = sock->sk; 997 997 998 - if (vsock_addr_cast((struct sockaddr *)addr, addr_len, &vm_addr) != 0) 998 + if (vsock_addr_cast(addr, addr_len, &vm_addr) != 0) 999 999 return -EINVAL; 1000 1000 1001 1001 lock_sock(sk); ··· 1328 1328 } 1329 1329 1330 1330 static int vsock_dgram_connect(struct socket *sock, 1331 - struct sockaddr *addr, int addr_len, int flags) 1331 + struct sockaddr_unsized *addr, int addr_len, int flags) 1332 1332 { 1333 1333 int err; 1334 1334 struct sock *sk; ··· 1528 1528 sock_put(sk); 1529 1529 } 1530 1530 1531 - static int vsock_connect(struct socket *sock, struct sockaddr *addr, 1531 + static int vsock_connect(struct socket *sock, struct sockaddr_unsized *addr, 1532 1532 int addr_len, int flags) 1533 1533 { 1534 1534 int err;
+1 -1
net/vmw_vsock/vsock_addr.c
··· 57 57 } 58 58 EXPORT_SYMBOL_GPL(vsock_addr_equals_addr); 59 59 60 - int vsock_addr_cast(const struct sockaddr *addr, 60 + int vsock_addr_cast(const struct sockaddr_unsized *addr, 61 61 size_t len, struct sockaddr_vm **out_addr) 62 62 { 63 63 if (len < sizeof(**out_addr))
+1 -1
net/x25/af_x25.c
··· 743 743 return rc; 744 744 } 745 745 746 - static int x25_connect(struct socket *sock, struct sockaddr *uaddr, 746 + static int x25_connect(struct socket *sock, struct sockaddr_unsized *uaddr, 747 747 int addr_len, int flags) 748 748 { 749 749 struct sock *sk = sock->sk;
+1 -1
samples/qmi/qmi_sample_client.c
··· 468 468 return ret; 469 469 470 470 sq = dev_get_platdata(&pdev->dev); 471 - ret = kernel_connect(sample->qmi.sock, (struct sockaddr *)sq, 471 + ret = kernel_connect(sample->qmi.sock, (struct sockaddr_unsized *)sq, 472 472 sizeof(*sq), 0); 473 473 if (ret < 0) { 474 474 pr_err("failed to connect to remote service port\n");
+1 -1
tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
··· 900 900 goto out; 901 901 } 902 902 903 - err = kernel_connect(sock, (struct sockaddr *)&args->addr, 903 + err = kernel_connect(sock, (struct sockaddr_unsized *)&args->addr, 904 904 args->addrlen, 0); 905 905 out: 906 906 mutex_unlock(&sock_lock);