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

net: Convert proto_ops bind() callbacks to use sockaddr_unsized

Update all struct proto_ops bind() 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-2-kees@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Kees Cook and committed by
Jakub Kicinski
0e50474f bf33247a

+113 -112
+1 -1
crypto/af_alg.c
··· 145 145 } 146 146 EXPORT_SYMBOL_GPL(af_alg_release_parent); 147 147 148 - static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 148 + static int alg_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 149 149 { 150 150 const u32 allowed = CRYPTO_ALG_KERN_DRIVER_ONLY; 151 151 struct sock *sk = sock->sk;
+2 -2
drivers/block/drbd/drbd_receiver.c
··· 450 450 * a free one dynamically. 451 451 */ 452 452 what = "bind before connect"; 453 - err = sock->ops->bind(sock, (struct sockaddr *) &src_in6, my_addr_len); 453 + err = sock->ops->bind(sock, (struct sockaddr_unsized *) &src_in6, my_addr_len); 454 454 if (err < 0) 455 455 goto out; 456 456 ··· 537 537 drbd_setbufsize(s_listen, sndbuf_size, rcvbuf_size); 538 538 539 539 what = "bind before listen"; 540 - err = s_listen->ops->bind(s_listen, (struct sockaddr *)&my_addr, my_addr_len); 540 + err = s_listen->ops->bind(s_listen, (struct sockaddr_unsized *)&my_addr, my_addr_len); 541 541 if (err < 0) 542 542 goto out; 543 543
+2 -2
drivers/infiniband/hw/erdma/erdma_cm.c
··· 993 993 int ret; 994 994 995 995 sock_set_reuseaddr(s->sk); 996 - ret = s->ops->bind(s, laddr, laddrlen); 996 + ret = s->ops->bind(s, (struct sockaddr_unsized *)laddr, laddrlen); 997 997 if (ret) 998 998 return ret; 999 999 ret = s->ops->connect(s, raddr, raddrlen, flags); ··· 1315 1315 if (ipv4_is_zeronet(laddr->sin_addr.s_addr)) 1316 1316 s->sk->sk_bound_dev_if = dev->netdev->ifindex; 1317 1317 1318 - ret = s->ops->bind(s, (struct sockaddr *)laddr, 1318 + ret = s->ops->bind(s, (struct sockaddr_unsized *)laddr, 1319 1319 sizeof(struct sockaddr_in)); 1320 1320 if (ret) 1321 1321 goto error;
+3 -3
drivers/infiniband/sw/siw/siw_cm.c
··· 1340 1340 return rv; 1341 1341 } 1342 1342 1343 - rv = s->ops->bind(s, laddr, size); 1343 + rv = s->ops->bind(s, (struct sockaddr_unsized *)laddr, size); 1344 1344 if (rv < 0) 1345 1345 return rv; 1346 1346 ··· 1789 1789 goto error; 1790 1790 } 1791 1791 } 1792 - rv = s->ops->bind(s, (struct sockaddr *)laddr, 1792 + rv = s->ops->bind(s, (struct sockaddr_unsized *)laddr, 1793 1793 sizeof(struct sockaddr_in)); 1794 1794 } else { 1795 1795 struct sockaddr_in6 *laddr = &to_sockaddr_in6(id->local_addr); ··· 1813 1813 goto error; 1814 1814 } 1815 1815 } 1816 - rv = s->ops->bind(s, (struct sockaddr *)laddr, 1816 + rv = s->ops->bind(s, (struct sockaddr_unsized *)laddr, 1817 1817 sizeof(struct sockaddr_in6)); 1818 1818 } 1819 1819 if (rv) {
+1 -1
drivers/isdn/mISDN/l1oip_core.c
··· 676 676 hc->sin_remote.sin_port = htons((unsigned short)hc->remoteport); 677 677 678 678 /* bind to incoming port */ 679 - if (socket->ops->bind(socket, (struct sockaddr *)&hc->sin_local, 679 + if (socket->ops->bind(socket, (struct sockaddr_unsized *)&hc->sin_local, 680 680 sizeof(hc->sin_local))) { 681 681 printk(KERN_ERR "%s: Failed to bind socket to port %d.\n", 682 682 __func__, hc->localport);
+2 -2
drivers/isdn/mISDN/socket.c
··· 462 462 } 463 463 464 464 static int 465 - data_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len) 465 + data_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len) 466 466 { 467 467 struct sockaddr_mISDN *maddr = (struct sockaddr_mISDN *) addr; 468 468 struct sock *sk = sock->sk; ··· 696 696 } 697 697 698 698 static int 699 - base_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len) 699 + base_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len) 700 700 { 701 701 struct sockaddr_mISDN *maddr = (struct sockaddr_mISDN *) addr; 702 702 struct sock *sk = sock->sk;
+2 -2
drivers/net/ppp/pptp.c
··· 382 382 return NET_RX_DROP; 383 383 } 384 384 385 - static int pptp_bind(struct socket *sock, struct sockaddr *uservaddr, 386 - int sockaddr_len) 385 + static int pptp_bind(struct socket *sock, struct sockaddr_unsized *uservaddr, 386 + int sockaddr_len) 387 387 { 388 388 struct sock *sk = sock->sk; 389 389 struct sockaddr_pppox *sp = (struct sockaddr_pppox *) uservaddr;
+1 -1
drivers/nvme/host/tcp.c
··· 1834 1834 sk_set_memalloc(queue->sock->sk); 1835 1835 1836 1836 if (nctrl->opts->mask & NVMF_OPT_HOST_TRADDR) { 1837 - ret = kernel_bind(queue->sock, (struct sockaddr *)&ctrl->src_addr, 1837 + ret = kernel_bind(queue->sock, (struct sockaddr_unsized *)&ctrl->src_addr, 1838 1838 sizeof(ctrl->src_addr)); 1839 1839 if (ret) { 1840 1840 dev_err(nctrl->device,
+1 -1
drivers/nvme/target/tcp.c
··· 2055 2055 if (so_priority > 0) 2056 2056 sock_set_priority(port->sock->sk, so_priority); 2057 2057 2058 - ret = kernel_bind(port->sock, (struct sockaddr *)&port->addr, 2058 + ret = kernel_bind(port->sock, (struct sockaddr_unsized *)&port->addr, 2059 2059 sizeof(port->addr)); 2060 2060 if (ret) { 2061 2061 pr_err("failed to bind port socket %d\n", ret);
+1 -1
drivers/target/iscsi/iscsi_target_login.c
··· 822 822 sock_set_reuseaddr(sock->sk); 823 823 ip_sock_set_freebind(sock->sk); 824 824 825 - ret = kernel_bind(sock, (struct sockaddr *)&np->np_sockaddr, len); 825 + ret = kernel_bind(sock, (struct sockaddr_unsized *)&np->np_sockaddr, len); 826 826 if (ret < 0) { 827 827 pr_err("kernel_bind() failed: %d\n", ret); 828 828 goto fail;
+1 -1
drivers/xen/pvcalls-back.c
··· 650 650 if (ret < 0) 651 651 goto out; 652 652 653 - ret = inet_bind(map->sock, (struct sockaddr *)&req->u.bind.addr, 653 + ret = inet_bind(map->sock, (struct sockaddr_unsized *)&req->u.bind.addr, 654 654 req->u.bind.len); 655 655 if (ret < 0) 656 656 goto out;
+3 -3
fs/afs/rxrpc.c
··· 82 82 if (ret < 0) 83 83 pr_err("Couldn't create RxGK CM key: %d\n", ret); 84 84 85 - ret = kernel_bind(socket, (struct sockaddr *) &srx, sizeof(srx)); 85 + ret = kernel_bind(socket, (struct sockaddr_unsized *) &srx, sizeof(srx)); 86 86 if (ret == -EADDRINUSE) { 87 87 srx.transport.sin6.sin6_port = 0; 88 - ret = kernel_bind(socket, (struct sockaddr *) &srx, sizeof(srx)); 88 + ret = kernel_bind(socket, (struct sockaddr_unsized *) &srx, sizeof(srx)); 89 89 } 90 90 if (ret < 0) 91 91 goto error_2; 92 92 93 93 srx.srx_service = YFS_CM_SERVICE; 94 - ret = kernel_bind(socket, (struct sockaddr *) &srx, sizeof(srx)); 94 + ret = kernel_bind(socket, (struct sockaddr_unsized *) &srx, sizeof(srx)); 95 95 if (ret < 0) 96 96 goto error_2; 97 97
+3 -3
fs/dlm/lowcomms.c
··· 1134 1134 make_sockaddr(&localaddr, port, &addr_len); 1135 1135 1136 1136 if (!i) 1137 - result = kernel_bind(sock, addr, addr_len); 1137 + result = kernel_bind(sock, (struct sockaddr_unsized *)addr, addr_len); 1138 1138 else 1139 1139 result = sock_bind_add(sock->sk, addr, addr_len); 1140 1140 ··· 1813 1813 memcpy(&src_addr, &dlm_local_addr[0], sizeof(src_addr)); 1814 1814 make_sockaddr(&src_addr, 0, &addr_len); 1815 1815 1816 - result = kernel_bind(sock, (struct sockaddr *)&src_addr, 1816 + result = kernel_bind(sock, (struct sockaddr_unsized *)&src_addr, 1817 1817 addr_len); 1818 1818 if (result < 0) { 1819 1819 /* This *may* not indicate a critical error */ ··· 1852 1852 1853 1853 /* Bind to our port */ 1854 1854 make_sockaddr(&dlm_local_addr[0], dlm_config.ci_tcp_port, &addr_len); 1855 - return kernel_bind(sock, (struct sockaddr *)&dlm_local_addr[0], 1855 + return kernel_bind(sock, (struct sockaddr_unsized *)&dlm_local_addr[0], 1856 1856 addr_len); 1857 1857 } 1858 1858
+2 -2
fs/ocfs2/cluster/tcp.c
··· 1615 1615 myaddr.sin_addr.s_addr = mynode->nd_ipv4_address; 1616 1616 myaddr.sin_port = htons(0); /* any port */ 1617 1617 1618 - ret = sock->ops->bind(sock, (struct sockaddr *)&myaddr, 1618 + ret = sock->ops->bind(sock, (struct sockaddr_unsized *)&myaddr, 1619 1619 sizeof(myaddr)); 1620 1620 if (ret) { 1621 1621 mlog(ML_ERROR, "bind failed with %d at address %pI4\n", ··· 2002 2002 INIT_WORK(&o2net_listen_work, o2net_accept_many); 2003 2003 2004 2004 sock->sk->sk_reuse = SK_CAN_REUSE; 2005 - ret = sock->ops->bind(sock, (struct sockaddr *)&sin, sizeof(sin)); 2005 + ret = sock->ops->bind(sock, (struct sockaddr_unsized *)&sin, sizeof(sin)); 2006 2006 if (ret < 0) { 2007 2007 printk(KERN_ERR "o2net: Error %d while binding socket at " 2008 2008 "%pI4:%u\n", ret, &addr, ntohs(port));
+1 -1
fs/smb/client/connect.c
··· 3112 3112 struct socket *socket = server->ssocket; 3113 3113 3114 3114 rc = kernel_bind(socket, 3115 - (struct sockaddr *) &server->srcaddr, 3115 + (struct sockaddr_unsized *) &server->srcaddr, 3116 3116 sizeof(server->srcaddr)); 3117 3117 if (rc < 0) { 3118 3118 struct sockaddr_in *saddr4;
+2 -2
fs/smb/server/transport_tcp.c
··· 519 519 } 520 520 521 521 if (ipv4) 522 - ret = kernel_bind(ksmbd_socket, (struct sockaddr *)&sin, 522 + ret = kernel_bind(ksmbd_socket, (struct sockaddr_unsized *)&sin, 523 523 sizeof(sin)); 524 524 else 525 - ret = kernel_bind(ksmbd_socket, (struct sockaddr *)&sin6, 525 + ret = kernel_bind(ksmbd_socket, (struct sockaddr_unsized *)&sin6, 526 526 sizeof(sin6)); 527 527 if (ret) { 528 528 pr_err("Failed to bind socket: %d\n", ret);
+2 -2
include/linux/net.h
··· 163 163 struct module *owner; 164 164 int (*release) (struct socket *sock); 165 165 int (*bind) (struct socket *sock, 166 - struct sockaddr *myaddr, 166 + struct sockaddr_unsized *myaddr, 167 167 int sockaddr_len); 168 168 int (*connect) (struct socket *sock, 169 169 struct sockaddr *vaddr, ··· 345 345 int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, 346 346 size_t num, size_t len, int flags); 347 347 348 - int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen); 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 351 int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,
+1 -1
include/net/inet_common.h
··· 42 42 int inet_listen(struct socket *sock, int backlog); 43 43 int __inet_listen_sk(struct sock *sk, int backlog); 44 44 void inet_sock_destruct(struct sock *sk); 45 - int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len); 45 + int inet_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len); 46 46 int inet_bind_sk(struct sock *sk, struct sockaddr *uaddr, int addr_len); 47 47 /* Don't allocate port at this moment, defer to connect. */ 48 48 #define BIND_FORCE_ADDRESS_NO_PORT (1 << 0)
+1 -1
include/net/ipv6.h
··· 1208 1208 void inet6_cleanup_sock(struct sock *sk); 1209 1209 void inet6_sock_destruct(struct sock *sk); 1210 1210 int inet6_release(struct socket *sock); 1211 - int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len); 1211 + int inet6_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len); 1212 1212 int inet6_bind_sk(struct sock *sk, struct sockaddr *uaddr, int addr_len); 1213 1213 int inet6_getname(struct socket *sock, struct sockaddr *uaddr, 1214 1214 int peer);
+1 -1
include/net/sock.h
··· 1920 1920 * Functions to fill in entries in struct proto_ops when a protocol 1921 1921 * does not implement a particular function. 1922 1922 */ 1923 - int sock_no_bind(struct socket *, struct sockaddr *, int); 1923 + int sock_no_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len); 1924 1924 int sock_no_connect(struct socket *, struct sockaddr *, int, int); 1925 1925 int sock_no_socketpair(struct socket *, struct socket *); 1926 1926 int sock_no_accept(struct socket *, struct socket *, struct proto_accept_arg *);
+1 -1
net/9p/trans_fd.c
··· 966 966 ((struct sockaddr_in *)&stor)->sin_port = htons((ushort)port); 967 967 else 968 968 ((struct sockaddr_in6 *)&stor)->sin6_port = htons((ushort)port); 969 - err = kernel_bind(sock, (struct sockaddr *)&stor, sizeof(stor)); 969 + err = kernel_bind(sock, (struct sockaddr_unsized *)&stor, sizeof(stor)); 970 970 if (err != -EADDRINUSE) 971 971 break; 972 972 }
+1 -1
net/appletalk/ddp.c
··· 1149 1149 } 1150 1150 1151 1151 /* Set the address 'our end' of the connection */ 1152 - static int atalk_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 1152 + static int atalk_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 1153 1153 { 1154 1154 struct sockaddr_at *addr = (struct sockaddr_at *)uaddr; 1155 1155 struct sock *sk = sock->sk;
+2 -2
net/atm/pvc.c
··· 24 24 return 0; 25 25 } 26 26 27 - static int pvc_bind(struct socket *sock, struct sockaddr *sockaddr, 27 + static int pvc_bind(struct socket *sock, struct sockaddr_unsized *sockaddr, 28 28 int sockaddr_len) 29 29 { 30 30 struct sock *sk = sock->sk; ··· 59 59 static int pvc_connect(struct socket *sock, struct sockaddr *sockaddr, 60 60 int sockaddr_len, int flags) 61 61 { 62 - return pvc_bind(sock, sockaddr, sockaddr_len); 62 + return pvc_bind(sock, (struct sockaddr_unsized *)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
··· 97 97 return 0; 98 98 } 99 99 100 - static int svc_bind(struct socket *sock, struct sockaddr *sockaddr, 100 + static int svc_bind(struct socket *sock, struct sockaddr_unsized *sockaddr, 101 101 int sockaddr_len) 102 102 { 103 103 DEFINE_WAIT(wait);
+1 -1
net/ax25/af_ax25.c
··· 1094 1094 * that we've implemented support for SO_BINDTODEVICE. It is however small 1095 1095 * and trivially backward compatible. 1096 1096 */ 1097 - static int ax25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 1097 + static int ax25_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 1098 1098 { 1099 1099 struct sock *sk = sock->sk; 1100 1100 struct full_sockaddr_ax25 *addr = (struct full_sockaddr_ax25 *)uaddr;
+1 -1
net/bluetooth/hci_sock.c
··· 1185 1185 } 1186 1186 #endif 1187 1187 1188 - static int hci_sock_bind(struct socket *sock, struct sockaddr *addr, 1188 + static int hci_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, 1189 1189 int addr_len) 1190 1190 { 1191 1191 struct sockaddr_hci haddr;
+2 -2
net/bluetooth/iso.c
··· 944 944 return 0; 945 945 } 946 946 947 - static int iso_sock_bind_bc(struct socket *sock, struct sockaddr *addr, 947 + static int iso_sock_bind_bc(struct socket *sock, struct sockaddr_unsized *addr, 948 948 int addr_len) 949 949 { 950 950 struct sockaddr_iso *sa = (struct sockaddr_iso *)addr; ··· 1022 1022 return err; 1023 1023 } 1024 1024 1025 - static int iso_sock_bind(struct socket *sock, struct sockaddr *addr, 1025 + static int iso_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, 1026 1026 int addr_len) 1027 1027 { 1028 1028 struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
+1 -1
net/bluetooth/l2cap_sock.c
··· 80 80 return 0; 81 81 } 82 82 83 - static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen) 83 + static int l2cap_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int alen) 84 84 { 85 85 struct sock *sk = sock->sk; 86 86 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
+2 -2
net/bluetooth/rfcomm/core.c
··· 781 781 addr.l2_psm = 0; 782 782 addr.l2_cid = 0; 783 783 addr.l2_bdaddr_type = BDADDR_BREDR; 784 - *err = kernel_bind(sock, (struct sockaddr *) &addr, sizeof(addr)); 784 + *err = kernel_bind(sock, (struct sockaddr_unsized *)&addr, sizeof(addr)); 785 785 if (*err < 0) 786 786 goto failed; 787 787 ··· 2068 2068 addr.l2_psm = cpu_to_le16(L2CAP_PSM_RFCOMM); 2069 2069 addr.l2_cid = 0; 2070 2070 addr.l2_bdaddr_type = BDADDR_BREDR; 2071 - err = kernel_bind(sock, (struct sockaddr *) &addr, sizeof(addr)); 2071 + err = kernel_bind(sock, (struct sockaddr_unsized *)&addr, sizeof(addr)); 2072 2072 if (err < 0) { 2073 2073 BT_ERR("Bind failed %d", err); 2074 2074 goto failed;
+1 -1
net/bluetooth/rfcomm/sock.c
··· 324 324 return 0; 325 325 } 326 326 327 - static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len) 327 + static int rfcomm_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len) 328 328 { 329 329 struct sockaddr_rc sa; 330 330 struct sock *sk = sock->sk;
+1 -1
net/bluetooth/sco.c
··· 605 605 return 0; 606 606 } 607 607 608 - static int sco_sock_bind(struct socket *sock, struct sockaddr *addr, 608 + static int sco_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, 609 609 int addr_len) 610 610 { 611 611 struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
+1 -1
net/can/isotp.c
··· 1246 1246 return 0; 1247 1247 } 1248 1248 1249 - static int isotp_bind(struct socket *sock, struct sockaddr *uaddr, int len) 1249 + static int isotp_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int len) 1250 1250 { 1251 1251 struct sockaddr_can *addr = (struct sockaddr_can *)uaddr; 1252 1252 struct sock *sk = sock->sk;
+1 -1
net/can/j1939/socket.c
··· 440 440 return 0; 441 441 } 442 442 443 - static int j1939_sk_bind(struct socket *sock, struct sockaddr *uaddr, int len) 443 + static int j1939_sk_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int len) 444 444 { 445 445 struct sockaddr_can *addr = (struct sockaddr_can *)uaddr; 446 446 struct j1939_sock *jsk = j1939_sk(sock->sk);
+1 -1
net/can/raw.c
··· 449 449 return 0; 450 450 } 451 451 452 - static int raw_bind(struct socket *sock, struct sockaddr *uaddr, int len) 452 + static int raw_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int len) 453 453 { 454 454 struct sockaddr_can *addr = (struct sockaddr_can *)uaddr; 455 455 struct sock *sk = sock->sk;
+1 -1
net/core/sock.c
··· 3462 3462 * function, some default processing is provided. 3463 3463 */ 3464 3464 3465 - int sock_no_bind(struct socket *sock, struct sockaddr *saddr, int len) 3465 + int sock_no_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len) 3466 3466 { 3467 3467 return -EOPNOTSUPP; 3468 3468 }
+2 -2
net/ieee802154/socket.c
··· 96 96 return sk->sk_prot->sendmsg(sk, msg, len); 97 97 } 98 98 99 - static int ieee802154_sock_bind(struct socket *sock, struct sockaddr *uaddr, 99 + static int ieee802154_sock_bind(struct socket *sock, struct sockaddr_unsized *uaddr, 100 100 int addr_len) 101 101 { 102 102 struct sock *sk = sock->sk; 103 103 104 104 if (sk->sk_prot->bind) 105 - return sk->sk_prot->bind(sk, uaddr, addr_len); 105 + return sk->sk_prot->bind(sk, (struct sockaddr *)uaddr, addr_len); 106 106 107 107 return sock_no_bind(sock, uaddr, addr_len); 108 108 }
+2 -2
net/ipv4/af_inet.c
··· 464 464 return __inet_bind(sk, uaddr, addr_len, flags); 465 465 } 466 466 467 - int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 467 + int inet_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 468 468 { 469 - return inet_bind_sk(sock->sk, uaddr, addr_len); 469 + return inet_bind_sk(sock->sk, (struct sockaddr *)uaddr, addr_len); 470 470 } 471 471 EXPORT_SYMBOL(inet_bind); 472 472
+1 -1
net/ipv4/udp_tunnel_core.c
··· 29 29 udp_addr.sin_family = AF_INET; 30 30 udp_addr.sin_addr = cfg->local_ip; 31 31 udp_addr.sin_port = cfg->local_udp_port; 32 - err = kernel_bind(sock, (struct sockaddr *)&udp_addr, 32 + err = kernel_bind(sock, (struct sockaddr_unsized *)&udp_addr, 33 33 sizeof(udp_addr)); 34 34 if (err < 0) 35 35 goto error;
+2 -2
net/ipv6/af_inet6.c
··· 465 465 } 466 466 467 467 /* bind for INET6 API */ 468 - int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 468 + int inet6_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 469 469 { 470 - return inet6_bind_sk(sock->sk, uaddr, addr_len); 470 + return inet6_bind_sk(sock->sk, (struct sockaddr *)uaddr, addr_len); 471 471 } 472 472 EXPORT_SYMBOL(inet6_bind); 473 473
+1 -1
net/ipv6/ip6_udp_tunnel.c
··· 40 40 memcpy(&udp6_addr.sin6_addr, &cfg->local_ip6, 41 41 sizeof(udp6_addr.sin6_addr)); 42 42 udp6_addr.sin6_port = cfg->local_udp_port; 43 - err = kernel_bind(sock, (struct sockaddr *)&udp6_addr, 43 + err = kernel_bind(sock, (struct sockaddr_unsized *)&udp6_addr, 44 44 sizeof(udp6_addr)); 45 45 if (err < 0) 46 46 goto error;
+1 -1
net/iucv/af_iucv.c
··· 563 563 } 564 564 565 565 /* Bind an unbound socket */ 566 - static int iucv_sock_bind(struct socket *sock, struct sockaddr *addr, 566 + static int iucv_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, 567 567 int addr_len) 568 568 { 569 569 DECLARE_SOCKADDR(struct sockaddr_iucv *, sa, addr);
+2 -2
net/l2tp/l2tp_core.c
··· 1503 1503 memcpy(&ip6_addr.l2tp_addr, cfg->local_ip6, 1504 1504 sizeof(ip6_addr.l2tp_addr)); 1505 1505 ip6_addr.l2tp_conn_id = tunnel_id; 1506 - err = kernel_bind(sock, (struct sockaddr *)&ip6_addr, 1506 + err = kernel_bind(sock, (struct sockaddr_unsized *)&ip6_addr, 1507 1507 sizeof(ip6_addr)); 1508 1508 if (err < 0) 1509 1509 goto out; ··· 1530 1530 ip_addr.l2tp_family = AF_INET; 1531 1531 ip_addr.l2tp_addr = cfg->local_ip; 1532 1532 ip_addr.l2tp_conn_id = tunnel_id; 1533 - err = kernel_bind(sock, (struct sockaddr *)&ip_addr, 1533 + err = kernel_bind(sock, (struct sockaddr_unsized *)&ip_addr, 1534 1534 sizeof(ip_addr)); 1535 1535 if (err < 0) 1536 1536 goto out;
+1 -1
net/llc/af_llc.c
··· 337 337 * otherwise all hell will break loose. 338 338 * Returns: 0 upon success, negative otherwise. 339 339 */ 340 - static int llc_ui_bind(struct socket *sock, struct sockaddr *uaddr, int addrlen) 340 + static int llc_ui_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addrlen) 341 341 { 342 342 struct sockaddr_llc *addr = (struct sockaddr_llc *)uaddr; 343 343 struct sock *sk = sock->sk;
+1 -1
net/mctp/af_mctp.c
··· 49 49 !addr->__smctp_pad0[2]; 50 50 } 51 51 52 - static int mctp_bind(struct socket *sock, struct sockaddr *addr, int addrlen) 52 + static int mctp_bind(struct socket *sock, struct sockaddr_unsized *addr, int addrlen) 53 53 { 54 54 struct sock *sk = sock->sk; 55 55 struct mctp_sock *msk = container_of(sk, struct mctp_sock, sk);
+1 -1
net/mctp/test/route-test.c
··· 205 205 addr.smctp_network = netid; 206 206 addr.smctp_addr.s_addr = 8; 207 207 addr.smctp_type = 0; 208 - rc = kernel_bind(sock, (struct sockaddr *)&addr, sizeof(addr)); 208 + rc = kernel_bind(sock, (struct sockaddr_unsized *)&addr, sizeof(addr)); 209 209 KUNIT_ASSERT_EQ(test, rc, 0); 210 210 211 211 *devp = dev;
+3 -3
net/mptcp/protocol.c
··· 3856 3856 .no_autobind = true, 3857 3857 }; 3858 3858 3859 - static int mptcp_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 3859 + static int mptcp_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 3860 3860 { 3861 3861 struct mptcp_sock *msk = mptcp_sk(sock->sk); 3862 3862 struct sock *ssk, *sk = sock->sk; ··· 3870 3870 } 3871 3871 3872 3872 if (sk->sk_family == AF_INET) 3873 - err = inet_bind_sk(ssk, uaddr, addr_len); 3873 + err = inet_bind_sk(ssk, (struct sockaddr *)uaddr, addr_len); 3874 3874 #if IS_ENABLED(CONFIG_MPTCP_IPV6) 3875 3875 else if (sk->sk_family == AF_INET6) 3876 - err = inet6_bind_sk(ssk, uaddr, addr_len); 3876 + err = inet6_bind_sk(ssk, (struct sockaddr *)uaddr, addr_len); 3877 3877 #endif 3878 3878 if (!err) 3879 3879 mptcp_copy_inaddrs(sk, ssk);
+1 -1
net/mptcp/subflow.c
··· 1660 1660 addrlen = sizeof(struct sockaddr_in6); 1661 1661 #endif 1662 1662 ssk->sk_bound_dev_if = local->ifindex; 1663 - err = kernel_bind(sf, (struct sockaddr *)&addr, addrlen); 1663 + err = kernel_bind(sf, (struct sockaddr_unsized *)&addr, addrlen); 1664 1664 if (err) { 1665 1665 MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_JOINSYNTXBINDERR); 1666 1666 pr_debug("msk=%p local=%d remote=%d bind error: %d\n",
+2 -2
net/netfilter/ipvs/ip_vs_sync.c
··· 1435 1435 sin.sin_addr.s_addr = addr; 1436 1436 sin.sin_port = 0; 1437 1437 1438 - return kernel_bind(sock, (struct sockaddr *)&sin, sizeof(sin)); 1438 + return kernel_bind(sock, (struct sockaddr_unsized *)&sin, sizeof(sin)); 1439 1439 } 1440 1440 1441 1441 static void get_mcast_sockaddr(union ipvs_sockaddr *sa, int *salen, ··· 1542 1542 1543 1543 get_mcast_sockaddr(&mcast_addr, &salen, &ipvs->bcfg, id); 1544 1544 sock->sk->sk_bound_dev_if = dev->ifindex; 1545 - result = kernel_bind(sock, (struct sockaddr *)&mcast_addr, salen); 1545 + result = kernel_bind(sock, (struct sockaddr_unsized *)&mcast_addr, salen); 1546 1546 if (result < 0) { 1547 1547 pr_err("Error binding to the multicast addr\n"); 1548 1548 goto error;
+1 -1
net/netlink/af_netlink.c
··· 966 966 nlk->netlink_unbind(sock_net(sk), undo + 1); 967 967 } 968 968 969 - static int netlink_bind(struct socket *sock, struct sockaddr *addr, 969 + static int netlink_bind(struct socket *sock, struct sockaddr_unsized *addr, 970 970 int addr_len) 971 971 { 972 972 struct sock *sk = sock->sk;
+1 -1
net/netrom/af_netrom.c
··· 561 561 return 0; 562 562 } 563 563 564 - static int nr_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 564 + static int nr_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 565 565 { 566 566 struct sock *sk = sock->sk; 567 567 struct nr_sock *nr = nr_sk(sk);
+2 -2
net/nfc/llcp_sock.c
··· 56 56 .obj_size = sizeof(struct nfc_llcp_sock), 57 57 }; 58 58 59 - static int llcp_sock_bind(struct socket *sock, struct sockaddr *addr, int alen) 59 + static int llcp_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int alen) 60 60 { 61 61 struct sock *sk = sock->sk; 62 62 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); ··· 146 146 return ret; 147 147 } 148 148 149 - static int llcp_raw_sock_bind(struct socket *sock, struct sockaddr *addr, 149 + static int llcp_raw_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, 150 150 int alen) 151 151 { 152 152 struct sock *sk = sock->sk;
+6 -5
net/packet/af_packet.c
··· 3279 3279 * Bind a packet socket to a device 3280 3280 */ 3281 3281 3282 - static int packet_bind_spkt(struct socket *sock, struct sockaddr *uaddr, 3282 + static int packet_bind_spkt(struct socket *sock, struct sockaddr_unsized *uaddr, 3283 3283 int addr_len) 3284 3284 { 3285 3285 struct sock *sk = sock->sk; 3286 - char name[sizeof(uaddr->sa_data_min) + 1]; 3286 + struct sockaddr *sa = (struct sockaddr *)uaddr; 3287 + char name[sizeof(sa->sa_data_min) + 1]; 3287 3288 3288 3289 /* 3289 3290 * Check legality ··· 3295 3294 /* uaddr->sa_data comes from the userspace, it's not guaranteed to be 3296 3295 * zero-terminated. 3297 3296 */ 3298 - memcpy(name, uaddr->sa_data, sizeof(uaddr->sa_data_min)); 3299 - name[sizeof(uaddr->sa_data_min)] = 0; 3297 + memcpy(name, sa->sa_data, sizeof(sa->sa_data_min)); 3298 + name[sizeof(sa->sa_data_min)] = 0; 3300 3299 3301 3300 return packet_do_bind(sk, name, 0, 0); 3302 3301 } 3303 3302 3304 - static int packet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 3303 + static int packet_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 3305 3304 { 3306 3305 struct sockaddr_ll *sll = (struct sockaddr_ll *)uaddr; 3307 3306 struct sock *sk = sock->sk;
+4 -4
net/phonet/socket.c
··· 153 153 154 154 static DEFINE_MUTEX(port_mutex); 155 155 156 - static int pn_socket_bind(struct socket *sock, struct sockaddr *addr, int len) 156 + static int pn_socket_bind(struct socket *sock, struct sockaddr_unsized *addr, int len) 157 157 { 158 158 struct sock *sk = sock->sk; 159 159 struct pn_sock *pn = pn_sk(sk); ··· 163 163 u8 saddr; 164 164 165 165 if (sk->sk_prot->bind) 166 - return sk->sk_prot->bind(sk, addr, len); 166 + return sk->sk_prot->bind(sk, (struct sockaddr *)addr, len); 167 167 168 168 if (len < sizeof(struct sockaddr_pn)) 169 169 return -EINVAL; ··· 206 206 207 207 memset(&sa, 0, sizeof(sa)); 208 208 sa.spn_family = AF_PHONET; 209 - err = pn_socket_bind(sock, (struct sockaddr *)&sa, 210 - sizeof(struct sockaddr_pn)); 209 + err = pn_socket_bind(sock, (struct sockaddr_unsized *)&sa, 210 + sizeof(struct sockaddr_pn)); 211 211 if (err != -EINVAL) 212 212 return err; 213 213 BUG_ON(!pn_port(pn_sk(sock->sk)->sobject));
+1 -1
net/qrtr/af_qrtr.c
··· 824 824 } 825 825 826 826 /* Bind socket to specified sockaddr. */ 827 - static int qrtr_bind(struct socket *sock, struct sockaddr *saddr, int len) 827 + static int qrtr_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len) 828 828 { 829 829 DECLARE_SOCKADDR(struct sockaddr_qrtr *, addr, saddr); 830 830 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
+1 -1
net/qrtr/ns.c
··· 714 714 sq.sq_port = QRTR_PORT_CTRL; 715 715 qrtr_ns.local_node = sq.sq_node; 716 716 717 - ret = kernel_bind(qrtr_ns.sock, (struct sockaddr *)&sq, sizeof(sq)); 717 + ret = kernel_bind(qrtr_ns.sock, (struct sockaddr_unsized *)&sq, sizeof(sq)); 718 718 if (ret < 0) { 719 719 pr_err("failed to bind to socket\n"); 720 720 goto err_wq;
+1 -1
net/rds/bind.c
··· 160 160 rs->rs_bound_addr = in6addr_any; 161 161 } 162 162 163 - int rds_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 163 + int rds_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 164 164 { 165 165 struct sock *sk = sock->sk; 166 166 struct rds_sock *rs = rds_sk_to_rs(sk);
+1 -1
net/rds/rds.h
··· 735 735 736 736 737 737 /* bind.c */ 738 - int rds_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len); 738 + int rds_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len); 739 739 void rds_remove_bound(struct rds_sock *rs); 740 740 struct rds_sock *rds_find_bound(const struct in6_addr *addr, __be16 port, 741 741 __u32 scope_id);
+1 -1
net/rds/tcp_connect.c
··· 145 145 addrlen = sizeof(sin); 146 146 } 147 147 148 - ret = kernel_bind(sock, addr, addrlen); 148 + ret = kernel_bind(sock, (struct sockaddr_unsized *)addr, addrlen); 149 149 if (ret) { 150 150 rdsdebug("bind failed with %d at address %pI6c\n", 151 151 ret, &conn->c_laddr);
+1 -1
net/rds/tcp_listen.c
··· 290 290 addr_len = sizeof(*sin); 291 291 } 292 292 293 - ret = kernel_bind(sock, (struct sockaddr *)&ss, addr_len); 293 + ret = kernel_bind(sock, (struct sockaddr_unsized *)&ss, addr_len); 294 294 if (ret < 0) { 295 295 rdsdebug("could not bind %s listener socket: %d\n", 296 296 isv6 ? "IPv6" : "IPv4", ret);
+1 -1
net/rose/af_rose.c
··· 693 693 return 0; 694 694 } 695 695 696 - static int rose_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 696 + static int rose_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 697 697 { 698 698 struct sock *sk = sock->sk; 699 699 struct rose_sock *rose = rose_sk(sk);
+1 -1
net/rxrpc/af_rxrpc.c
··· 127 127 /* 128 128 * bind a local address to an RxRPC socket 129 129 */ 130 - static int rxrpc_bind(struct socket *sock, struct sockaddr *saddr, int len) 130 + static int rxrpc_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len) 131 131 { 132 132 struct sockaddr_rxrpc *srx = (struct sockaddr_rxrpc *)saddr; 133 133 struct rxrpc_local *local;
+1 -1
net/rxrpc/rxperf.c
··· 211 211 212 212 ret = rxrpc_sock_set_security_keyring(socket->sk, rxperf_sec_keyring); 213 213 214 - ret = kernel_bind(socket, (struct sockaddr *)&srx, sizeof(srx)); 214 + ret = kernel_bind(socket, (struct sockaddr_unsized *)&srx, sizeof(srx)); 215 215 if (ret < 0) 216 216 goto error_2; 217 217
+1 -1
net/smc/af_smc.c
··· 421 421 return sk; 422 422 } 423 423 424 - int smc_bind(struct socket *sock, struct sockaddr *uaddr, 424 + int smc_bind(struct socket *sock, struct sockaddr_unsized *uaddr, 425 425 int addr_len) 426 426 { 427 427 struct sockaddr_in *addr = (struct sockaddr_in *)uaddr;
+1 -1
net/smc/smc.h
··· 42 42 void smc_release_cb(struct sock *sk); 43 43 44 44 int smc_release(struct socket *sock); 45 - int smc_bind(struct socket *sock, struct sockaddr *uaddr, 45 + int smc_bind(struct socket *sock, struct sockaddr_unsized *uaddr, 46 46 int addr_len); 47 47 int smc_connect(struct socket *sock, struct sockaddr *addr, 48 48 int alen, int flags);
+3 -3
net/socket.c
··· 1872 1872 addrlen); 1873 1873 if (!err) 1874 1874 err = READ_ONCE(sock->ops)->bind(sock, 1875 - (struct sockaddr *)address, 1875 + (struct sockaddr_unsized *)address, 1876 1876 addrlen); 1877 1877 return err; 1878 1878 } ··· 3583 3583 * Returns 0 or an error. 3584 3584 */ 3585 3585 3586 - int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen) 3586 + int kernel_bind(struct socket *sock, struct sockaddr_unsized *addr, int addrlen) 3587 3587 { 3588 3588 struct sockaddr_storage address; 3589 3589 3590 3590 memcpy(&address, addr, addrlen); 3591 3591 3592 - return READ_ONCE(sock->ops)->bind(sock, (struct sockaddr *)&address, 3592 + return READ_ONCE(sock->ops)->bind(sock, (struct sockaddr_unsized *)&address, 3593 3593 addrlen); 3594 3594 } 3595 3595 EXPORT_SYMBOL(kernel_bind);
+2 -2
net/sunrpc/clnt.c
··· 1457 1457 switch (sap->sa_family) { 1458 1458 case AF_INET: 1459 1459 err = kernel_bind(sock, 1460 - (struct sockaddr *)&rpc_inaddr_loopback, 1460 + (struct sockaddr_unsized *)&rpc_inaddr_loopback, 1461 1461 sizeof(rpc_inaddr_loopback)); 1462 1462 break; 1463 1463 case AF_INET6: 1464 1464 err = kernel_bind(sock, 1465 - (struct sockaddr *)&rpc_in6addr_loopback, 1465 + (struct sockaddr_unsized *)&rpc_in6addr_loopback, 1466 1466 sizeof(rpc_in6addr_loopback)); 1467 1467 break; 1468 1468 default:
+1 -1
net/sunrpc/svcsock.c
··· 1557 1557 ip6_sock_set_v6only(sock->sk); 1558 1558 if (type == SOCK_STREAM) 1559 1559 sock->sk->sk_reuse = SK_CAN_REUSE; /* allow address reuse */ 1560 - error = kernel_bind(sock, sin, len); 1560 + error = kernel_bind(sock, (struct sockaddr_unsized *)sin, len); 1561 1561 if (error < 0) 1562 1562 goto bummer; 1563 1563
+2 -2
net/sunrpc/xprtsock.c
··· 1845 1845 memcpy(&myaddr, &transport->srcaddr, transport->xprt.addrlen); 1846 1846 do { 1847 1847 rpc_set_port((struct sockaddr *)&myaddr, port); 1848 - err = kernel_bind(sock, (struct sockaddr *)&myaddr, 1849 - transport->xprt.addrlen); 1848 + err = kernel_bind(sock, (struct sockaddr_unsized *)&myaddr, 1849 + transport->xprt.addrlen); 1850 1850 if (err == 0) { 1851 1851 if (transport->xprt.reuseport) 1852 1852 transport->srcport = port;
+2 -2
net/tipc/socket.c
··· 710 710 return res; 711 711 } 712 712 713 - static int tipc_bind(struct socket *sock, struct sockaddr *skaddr, int alen) 713 + static int tipc_bind(struct socket *sock, struct sockaddr_unsized *skaddr, int alen) 714 714 { 715 715 struct tipc_uaddr *ua = (struct tipc_uaddr *)skaddr; 716 716 u32 atype = ua->addrtype; ··· 726 726 return -EACCES; 727 727 } 728 728 } 729 - return tipc_sk_bind(sock, skaddr, alen); 729 + return tipc_sk_bind(sock, (struct sockaddr *)skaddr, alen); 730 730 } 731 731 732 732 /**
+2 -2
net/unix/af_unix.c
··· 843 843 } 844 844 845 845 static int unix_release(struct socket *); 846 - static int unix_bind(struct socket *, struct sockaddr *, int); 846 + static int unix_bind(struct socket *, struct sockaddr_unsized *, int); 847 847 static int unix_stream_connect(struct socket *, struct sockaddr *, 848 848 int addr_len, int flags); 849 849 static int unix_socketpair(struct socket *, struct socket *); ··· 1466 1466 return err; 1467 1467 } 1468 1468 1469 - static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 1469 + static int unix_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 1470 1470 { 1471 1471 struct sockaddr_un *sunaddr = (struct sockaddr_un *)uaddr; 1472 1472 struct sock *sk = sock->sk;
+2 -2
net/vmw_vsock/af_vsock.c
··· 987 987 } 988 988 989 989 static int 990 - vsock_bind(struct socket *sock, struct sockaddr *addr, int addr_len) 990 + vsock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len) 991 991 { 992 992 int err; 993 993 struct sock *sk; ··· 995 995 996 996 sk = sock->sk; 997 997 998 - if (vsock_addr_cast(addr, addr_len, &vm_addr) != 0) 998 + if (vsock_addr_cast((struct sockaddr *)addr, addr_len, &vm_addr) != 0) 999 999 return -EINVAL; 1000 1000 1001 1001 lock_sock(sk);
+1 -1
net/x25/af_x25.c
··· 670 670 return 0; 671 671 } 672 672 673 - static int x25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) 673 + static int x25_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len) 674 674 { 675 675 struct sock *sk = sock->sk; 676 676 struct sockaddr_x25 *addr = (struct sockaddr_x25 *)uaddr;
+1 -1
net/xdp/xsk.c
··· 1238 1238 return xs->fq_tmp && xs->cq_tmp; 1239 1239 } 1240 1240 1241 - static int xsk_bind(struct socket *sock, struct sockaddr *addr, int addr_len) 1241 + static int xsk_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len) 1242 1242 { 1243 1243 struct sockaddr_xdp *sxdp = (struct sockaddr_xdp *)addr; 1244 1244 struct sock *sk = sock->sk;
+1 -1
tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
··· 923 923 goto out; 924 924 } 925 925 926 - err = kernel_bind(sock, (struct sockaddr *)&args->addr, args->addrlen); 926 + err = kernel_bind(sock, (struct sockaddr_unsized *)&args->addr, args->addrlen); 927 927 out: 928 928 mutex_unlock(&sock_lock); 929 929