mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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>
This commit is contained in:
committed by
Jakub Kicinski
parent
bf33247a90
commit
0e50474fa5
@@ -145,7 +145,7 @@ void af_alg_release_parent(struct sock *sk)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(af_alg_release_parent);
|
||||
|
||||
static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int alg_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
const u32 allowed = CRYPTO_ALG_KERN_DRIVER_ONLY;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -450,7 +450,7 @@ static struct socket *drbd_try_connect(struct drbd_connection *connection)
|
||||
* a free one dynamically.
|
||||
*/
|
||||
what = "bind before connect";
|
||||
err = sock->ops->bind(sock, (struct sockaddr *) &src_in6, my_addr_len);
|
||||
err = sock->ops->bind(sock, (struct sockaddr_unsized *) &src_in6, my_addr_len);
|
||||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
@@ -537,7 +537,7 @@ static int prepare_listen_socket(struct drbd_connection *connection, struct acce
|
||||
drbd_setbufsize(s_listen, sndbuf_size, rcvbuf_size);
|
||||
|
||||
what = "bind before listen";
|
||||
err = s_listen->ops->bind(s_listen, (struct sockaddr *)&my_addr, my_addr_len);
|
||||
err = s_listen->ops->bind(s_listen, (struct sockaddr_unsized *)&my_addr, my_addr_len);
|
||||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
|
||||
@@ -993,7 +993,7 @@ static int kernel_bindconnect(struct socket *s, struct sockaddr *laddr,
|
||||
int ret;
|
||||
|
||||
sock_set_reuseaddr(s->sk);
|
||||
ret = s->ops->bind(s, laddr, laddrlen);
|
||||
ret = s->ops->bind(s, (struct sockaddr_unsized *)laddr, laddrlen);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = s->ops->connect(s, raddr, raddrlen, flags);
|
||||
@@ -1315,7 +1315,7 @@ int erdma_create_listen(struct iw_cm_id *id, int backlog)
|
||||
if (ipv4_is_zeronet(laddr->sin_addr.s_addr))
|
||||
s->sk->sk_bound_dev_if = dev->netdev->ifindex;
|
||||
|
||||
ret = s->ops->bind(s, (struct sockaddr *)laddr,
|
||||
ret = s->ops->bind(s, (struct sockaddr_unsized *)laddr,
|
||||
sizeof(struct sockaddr_in));
|
||||
if (ret)
|
||||
goto error;
|
||||
|
||||
@@ -1340,7 +1340,7 @@ static int kernel_bindconnect(struct socket *s, struct sockaddr *laddr,
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = s->ops->bind(s, laddr, size);
|
||||
rv = s->ops->bind(s, (struct sockaddr_unsized *)laddr, size);
|
||||
if (rv < 0)
|
||||
return rv;
|
||||
|
||||
@@ -1789,7 +1789,7 @@ int siw_create_listen(struct iw_cm_id *id, int backlog)
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
rv = s->ops->bind(s, (struct sockaddr *)laddr,
|
||||
rv = s->ops->bind(s, (struct sockaddr_unsized *)laddr,
|
||||
sizeof(struct sockaddr_in));
|
||||
} else {
|
||||
struct sockaddr_in6 *laddr = &to_sockaddr_in6(id->local_addr);
|
||||
@@ -1813,7 +1813,7 @@ int siw_create_listen(struct iw_cm_id *id, int backlog)
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
rv = s->ops->bind(s, (struct sockaddr *)laddr,
|
||||
rv = s->ops->bind(s, (struct sockaddr_unsized *)laddr,
|
||||
sizeof(struct sockaddr_in6));
|
||||
}
|
||||
if (rv) {
|
||||
|
||||
@@ -676,7 +676,7 @@ l1oip_socket_thread(void *data)
|
||||
hc->sin_remote.sin_port = htons((unsigned short)hc->remoteport);
|
||||
|
||||
/* bind to incoming port */
|
||||
if (socket->ops->bind(socket, (struct sockaddr *)&hc->sin_local,
|
||||
if (socket->ops->bind(socket, (struct sockaddr_unsized *)&hc->sin_local,
|
||||
sizeof(hc->sin_local))) {
|
||||
printk(KERN_ERR "%s: Failed to bind socket to port %d.\n",
|
||||
__func__, hc->localport);
|
||||
|
||||
@@ -462,7 +462,7 @@ static int data_sock_getsockopt(struct socket *sock, int level, int optname,
|
||||
}
|
||||
|
||||
static int
|
||||
data_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
||||
data_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len)
|
||||
{
|
||||
struct sockaddr_mISDN *maddr = (struct sockaddr_mISDN *) addr;
|
||||
struct sock *sk = sock->sk;
|
||||
@@ -696,7 +696,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
}
|
||||
|
||||
static int
|
||||
base_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
||||
base_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len)
|
||||
{
|
||||
struct sockaddr_mISDN *maddr = (struct sockaddr_mISDN *) addr;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -382,8 +382,8 @@ drop:
|
||||
return NET_RX_DROP;
|
||||
}
|
||||
|
||||
static int pptp_bind(struct socket *sock, struct sockaddr *uservaddr,
|
||||
int sockaddr_len)
|
||||
static int pptp_bind(struct socket *sock, struct sockaddr_unsized *uservaddr,
|
||||
int sockaddr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct sockaddr_pppox *sp = (struct sockaddr_pppox *) uservaddr;
|
||||
|
||||
@@ -1834,7 +1834,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl, int qid,
|
||||
sk_set_memalloc(queue->sock->sk);
|
||||
|
||||
if (nctrl->opts->mask & NVMF_OPT_HOST_TRADDR) {
|
||||
ret = kernel_bind(queue->sock, (struct sockaddr *)&ctrl->src_addr,
|
||||
ret = kernel_bind(queue->sock, (struct sockaddr_unsized *)&ctrl->src_addr,
|
||||
sizeof(ctrl->src_addr));
|
||||
if (ret) {
|
||||
dev_err(nctrl->device,
|
||||
|
||||
@@ -2055,7 +2055,7 @@ static int nvmet_tcp_add_port(struct nvmet_port *nport)
|
||||
if (so_priority > 0)
|
||||
sock_set_priority(port->sock->sk, so_priority);
|
||||
|
||||
ret = kernel_bind(port->sock, (struct sockaddr *)&port->addr,
|
||||
ret = kernel_bind(port->sock, (struct sockaddr_unsized *)&port->addr,
|
||||
sizeof(port->addr));
|
||||
if (ret) {
|
||||
pr_err("failed to bind port socket %d\n", ret);
|
||||
|
||||
@@ -822,7 +822,7 @@ int iscsit_setup_np(
|
||||
sock_set_reuseaddr(sock->sk);
|
||||
ip_sock_set_freebind(sock->sk);
|
||||
|
||||
ret = kernel_bind(sock, (struct sockaddr *)&np->np_sockaddr, len);
|
||||
ret = kernel_bind(sock, (struct sockaddr_unsized *)&np->np_sockaddr, len);
|
||||
if (ret < 0) {
|
||||
pr_err("kernel_bind() failed: %d\n", ret);
|
||||
goto fail;
|
||||
|
||||
@@ -650,7 +650,7 @@ static int pvcalls_back_bind(struct xenbus_device *dev,
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
ret = inet_bind(map->sock, (struct sockaddr *)&req->u.bind.addr,
|
||||
ret = inet_bind(map->sock, (struct sockaddr_unsized *)&req->u.bind.addr,
|
||||
req->u.bind.len);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
@@ -82,16 +82,16 @@ int afs_open_socket(struct afs_net *net)
|
||||
if (ret < 0)
|
||||
pr_err("Couldn't create RxGK CM key: %d\n", ret);
|
||||
|
||||
ret = kernel_bind(socket, (struct sockaddr *) &srx, sizeof(srx));
|
||||
ret = kernel_bind(socket, (struct sockaddr_unsized *) &srx, sizeof(srx));
|
||||
if (ret == -EADDRINUSE) {
|
||||
srx.transport.sin6.sin6_port = 0;
|
||||
ret = kernel_bind(socket, (struct sockaddr *) &srx, sizeof(srx));
|
||||
ret = kernel_bind(socket, (struct sockaddr_unsized *) &srx, sizeof(srx));
|
||||
}
|
||||
if (ret < 0)
|
||||
goto error_2;
|
||||
|
||||
srx.srx_service = YFS_CM_SERVICE;
|
||||
ret = kernel_bind(socket, (struct sockaddr *) &srx, sizeof(srx));
|
||||
ret = kernel_bind(socket, (struct sockaddr_unsized *) &srx, sizeof(srx));
|
||||
if (ret < 0)
|
||||
goto error_2;
|
||||
|
||||
|
||||
@@ -1134,7 +1134,7 @@ static int sctp_bind_addrs(struct socket *sock, __be16 port)
|
||||
make_sockaddr(&localaddr, port, &addr_len);
|
||||
|
||||
if (!i)
|
||||
result = kernel_bind(sock, addr, addr_len);
|
||||
result = kernel_bind(sock, (struct sockaddr_unsized *)addr, addr_len);
|
||||
else
|
||||
result = sock_bind_add(sock->sk, addr, addr_len);
|
||||
|
||||
@@ -1813,7 +1813,7 @@ static int dlm_tcp_bind(struct socket *sock)
|
||||
memcpy(&src_addr, &dlm_local_addr[0], sizeof(src_addr));
|
||||
make_sockaddr(&src_addr, 0, &addr_len);
|
||||
|
||||
result = kernel_bind(sock, (struct sockaddr *)&src_addr,
|
||||
result = kernel_bind(sock, (struct sockaddr_unsized *)&src_addr,
|
||||
addr_len);
|
||||
if (result < 0) {
|
||||
/* This *may* not indicate a critical error */
|
||||
@@ -1852,7 +1852,7 @@ static int dlm_tcp_listen_bind(struct socket *sock)
|
||||
|
||||
/* Bind to our port */
|
||||
make_sockaddr(&dlm_local_addr[0], dlm_config.ci_tcp_port, &addr_len);
|
||||
return kernel_bind(sock, (struct sockaddr *)&dlm_local_addr[0],
|
||||
return kernel_bind(sock, (struct sockaddr_unsized *)&dlm_local_addr[0],
|
||||
addr_len);
|
||||
}
|
||||
|
||||
|
||||
@@ -1615,7 +1615,7 @@ static void o2net_start_connect(struct work_struct *work)
|
||||
myaddr.sin_addr.s_addr = mynode->nd_ipv4_address;
|
||||
myaddr.sin_port = htons(0); /* any port */
|
||||
|
||||
ret = sock->ops->bind(sock, (struct sockaddr *)&myaddr,
|
||||
ret = sock->ops->bind(sock, (struct sockaddr_unsized *)&myaddr,
|
||||
sizeof(myaddr));
|
||||
if (ret) {
|
||||
mlog(ML_ERROR, "bind failed with %d at address %pI4\n",
|
||||
@@ -2002,7 +2002,7 @@ static int o2net_open_listening_sock(__be32 addr, __be16 port)
|
||||
INIT_WORK(&o2net_listen_work, o2net_accept_many);
|
||||
|
||||
sock->sk->sk_reuse = SK_CAN_REUSE;
|
||||
ret = sock->ops->bind(sock, (struct sockaddr *)&sin, sizeof(sin));
|
||||
ret = sock->ops->bind(sock, (struct sockaddr_unsized *)&sin, sizeof(sin));
|
||||
if (ret < 0) {
|
||||
printk(KERN_ERR "o2net: Error %d while binding socket at "
|
||||
"%pI4:%u\n", ret, &addr, ntohs(port));
|
||||
|
||||
@@ -3112,7 +3112,7 @@ bind_socket(struct TCP_Server_Info *server)
|
||||
struct socket *socket = server->ssocket;
|
||||
|
||||
rc = kernel_bind(socket,
|
||||
(struct sockaddr *) &server->srcaddr,
|
||||
(struct sockaddr_unsized *) &server->srcaddr,
|
||||
sizeof(server->srcaddr));
|
||||
if (rc < 0) {
|
||||
struct sockaddr_in *saddr4;
|
||||
|
||||
@@ -519,10 +519,10 @@ static int create_socket(struct interface *iface)
|
||||
}
|
||||
|
||||
if (ipv4)
|
||||
ret = kernel_bind(ksmbd_socket, (struct sockaddr *)&sin,
|
||||
ret = kernel_bind(ksmbd_socket, (struct sockaddr_unsized *)&sin,
|
||||
sizeof(sin));
|
||||
else
|
||||
ret = kernel_bind(ksmbd_socket, (struct sockaddr *)&sin6,
|
||||
ret = kernel_bind(ksmbd_socket, (struct sockaddr_unsized *)&sin6,
|
||||
sizeof(sin6));
|
||||
if (ret) {
|
||||
pr_err("Failed to bind socket: %d\n", ret);
|
||||
|
||||
@@ -163,7 +163,7 @@ struct proto_ops {
|
||||
struct module *owner;
|
||||
int (*release) (struct socket *sock);
|
||||
int (*bind) (struct socket *sock,
|
||||
struct sockaddr *myaddr,
|
||||
struct sockaddr_unsized *myaddr,
|
||||
int sockaddr_len);
|
||||
int (*connect) (struct socket *sock,
|
||||
struct sockaddr *vaddr,
|
||||
@@ -345,7 +345,7 @@ int kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec,
|
||||
int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec,
|
||||
size_t num, size_t len, int flags);
|
||||
|
||||
int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen);
|
||||
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,
|
||||
|
||||
@@ -42,7 +42,7 @@ int inet_shutdown(struct socket *sock, int how);
|
||||
int inet_listen(struct socket *sock, int backlog);
|
||||
int __inet_listen_sk(struct sock *sk, int backlog);
|
||||
void inet_sock_destruct(struct sock *sk);
|
||||
int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len);
|
||||
int inet_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len);
|
||||
int inet_bind_sk(struct sock *sk, struct sockaddr *uaddr, int addr_len);
|
||||
/* Don't allocate port at this moment, defer to connect. */
|
||||
#define BIND_FORCE_ADDRESS_NO_PORT (1 << 0)
|
||||
|
||||
@@ -1208,7 +1208,7 @@ void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu);
|
||||
void inet6_cleanup_sock(struct sock *sk);
|
||||
void inet6_sock_destruct(struct sock *sk);
|
||||
int inet6_release(struct socket *sock);
|
||||
int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len);
|
||||
int inet6_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len);
|
||||
int inet6_bind_sk(struct sock *sk, struct sockaddr *uaddr, int addr_len);
|
||||
int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
|
||||
int peer);
|
||||
|
||||
@@ -1920,7 +1920,7 @@ int sock_cmsg_send(struct sock *sk, struct msghdr *msg,
|
||||
* Functions to fill in entries in struct proto_ops when a protocol
|
||||
* does not implement a particular function.
|
||||
*/
|
||||
int sock_no_bind(struct socket *, struct sockaddr *, int);
|
||||
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_socketpair(struct socket *, struct socket *);
|
||||
int sock_no_accept(struct socket *, struct socket *, struct proto_accept_arg *);
|
||||
|
||||
@@ -966,7 +966,7 @@ static int p9_bind_privport(struct socket *sock)
|
||||
((struct sockaddr_in *)&stor)->sin_port = htons((ushort)port);
|
||||
else
|
||||
((struct sockaddr_in6 *)&stor)->sin6_port = htons((ushort)port);
|
||||
err = kernel_bind(sock, (struct sockaddr *)&stor, sizeof(stor));
|
||||
err = kernel_bind(sock, (struct sockaddr_unsized *)&stor, sizeof(stor));
|
||||
if (err != -EADDRINUSE)
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1149,7 +1149,7 @@ out:
|
||||
}
|
||||
|
||||
/* Set the address 'our end' of the connection */
|
||||
static int atalk_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int atalk_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct sockaddr_at *addr = (struct sockaddr_at *)uaddr;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -24,7 +24,7 @@ static int pvc_shutdown(struct socket *sock, int how)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int pvc_bind(struct socket *sock, struct sockaddr *sockaddr,
|
||||
static int pvc_bind(struct socket *sock, struct sockaddr_unsized *sockaddr,
|
||||
int sockaddr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
@@ -59,7 +59,7 @@ out:
|
||||
static int pvc_connect(struct socket *sock, struct sockaddr *sockaddr,
|
||||
int sockaddr_len, int flags)
|
||||
{
|
||||
return pvc_bind(sock, sockaddr, sockaddr_len);
|
||||
return pvc_bind(sock, (struct sockaddr_unsized *)sockaddr, sockaddr_len);
|
||||
}
|
||||
|
||||
static int pvc_setsockopt(struct socket *sock, int level, int optname,
|
||||
|
||||
@@ -97,7 +97,7 @@ static int svc_release(struct socket *sock)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int svc_bind(struct socket *sock, struct sockaddr *sockaddr,
|
||||
static int svc_bind(struct socket *sock, struct sockaddr_unsized *sockaddr,
|
||||
int sockaddr_len)
|
||||
{
|
||||
DEFINE_WAIT(wait);
|
||||
|
||||
@@ -1094,7 +1094,7 @@ static int ax25_release(struct socket *sock)
|
||||
* that we've implemented support for SO_BINDTODEVICE. It is however small
|
||||
* and trivially backward compatible.
|
||||
*/
|
||||
static int ax25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int ax25_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct full_sockaddr_ax25 *addr = (struct full_sockaddr_ax25 *)uaddr;
|
||||
|
||||
@@ -1185,7 +1185,7 @@ static int hci_sock_compat_ioctl(struct socket *sock, unsigned int cmd,
|
||||
}
|
||||
#endif
|
||||
|
||||
static int hci_sock_bind(struct socket *sock, struct sockaddr *addr,
|
||||
static int hci_sock_bind(struct socket *sock, struct sockaddr_unsized *addr,
|
||||
int addr_len)
|
||||
{
|
||||
struct sockaddr_hci haddr;
|
||||
|
||||
@@ -944,7 +944,7 @@ static int iso_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int iso_sock_bind_bc(struct socket *sock, struct sockaddr *addr,
|
||||
static int iso_sock_bind_bc(struct socket *sock, struct sockaddr_unsized *addr,
|
||||
int addr_len)
|
||||
{
|
||||
struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
|
||||
@@ -1022,7 +1022,7 @@ done:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int iso_sock_bind(struct socket *sock, struct sockaddr *addr,
|
||||
static int iso_sock_bind(struct socket *sock, struct sockaddr_unsized *addr,
|
||||
int addr_len)
|
||||
{
|
||||
struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
|
||||
|
||||
@@ -80,7 +80,7 @@ static int l2cap_validate_le_psm(u16 psm)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
|
||||
static int l2cap_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int alen)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct l2cap_chan *chan = l2cap_pi(sk)->chan;
|
||||
|
||||
@@ -781,7 +781,7 @@ static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src,
|
||||
addr.l2_psm = 0;
|
||||
addr.l2_cid = 0;
|
||||
addr.l2_bdaddr_type = BDADDR_BREDR;
|
||||
*err = kernel_bind(sock, (struct sockaddr *) &addr, sizeof(addr));
|
||||
*err = kernel_bind(sock, (struct sockaddr_unsized *)&addr, sizeof(addr));
|
||||
if (*err < 0)
|
||||
goto failed;
|
||||
|
||||
@@ -2068,7 +2068,7 @@ static int rfcomm_add_listener(bdaddr_t *ba)
|
||||
addr.l2_psm = cpu_to_le16(L2CAP_PSM_RFCOMM);
|
||||
addr.l2_cid = 0;
|
||||
addr.l2_bdaddr_type = BDADDR_BREDR;
|
||||
err = kernel_bind(sock, (struct sockaddr *) &addr, sizeof(addr));
|
||||
err = kernel_bind(sock, (struct sockaddr_unsized *)&addr, sizeof(addr));
|
||||
if (err < 0) {
|
||||
BT_ERR("Bind failed %d", err);
|
||||
goto failed;
|
||||
|
||||
@@ -324,7 +324,7 @@ static int rfcomm_sock_create(struct net *net, struct socket *sock,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
||||
static int rfcomm_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len)
|
||||
{
|
||||
struct sockaddr_rc sa;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -605,7 +605,7 @@ static int sco_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sco_sock_bind(struct socket *sock, struct sockaddr *addr,
|
||||
static int sco_sock_bind(struct socket *sock, struct sockaddr_unsized *addr,
|
||||
int addr_len)
|
||||
{
|
||||
struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
|
||||
|
||||
@@ -1246,7 +1246,7 @@ static int isotp_release(struct socket *sock)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int isotp_bind(struct socket *sock, struct sockaddr *uaddr, int len)
|
||||
static int isotp_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int len)
|
||||
{
|
||||
struct sockaddr_can *addr = (struct sockaddr_can *)uaddr;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -440,7 +440,7 @@ static int j1939_sk_sanity_check(struct sockaddr_can *addr, int len)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int j1939_sk_bind(struct socket *sock, struct sockaddr *uaddr, int len)
|
||||
static int j1939_sk_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int len)
|
||||
{
|
||||
struct sockaddr_can *addr = (struct sockaddr_can *)uaddr;
|
||||
struct j1939_sock *jsk = j1939_sk(sock->sk);
|
||||
|
||||
@@ -449,7 +449,7 @@ static int raw_release(struct socket *sock)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int raw_bind(struct socket *sock, struct sockaddr *uaddr, int len)
|
||||
static int raw_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int len)
|
||||
{
|
||||
struct sockaddr_can *addr = (struct sockaddr_can *)uaddr;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -3462,7 +3462,7 @@ EXPORT_SYMBOL_GPL(sk_set_peek_off);
|
||||
* function, some default processing is provided.
|
||||
*/
|
||||
|
||||
int sock_no_bind(struct socket *sock, struct sockaddr *saddr, int len)
|
||||
int sock_no_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
@@ -96,13 +96,13 @@ static int ieee802154_sock_sendmsg(struct socket *sock, struct msghdr *msg,
|
||||
return sk->sk_prot->sendmsg(sk, msg, len);
|
||||
}
|
||||
|
||||
static int ieee802154_sock_bind(struct socket *sock, struct sockaddr *uaddr,
|
||||
static int ieee802154_sock_bind(struct socket *sock, struct sockaddr_unsized *uaddr,
|
||||
int addr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
if (sk->sk_prot->bind)
|
||||
return sk->sk_prot->bind(sk, uaddr, addr_len);
|
||||
return sk->sk_prot->bind(sk, (struct sockaddr *)uaddr, addr_len);
|
||||
|
||||
return sock_no_bind(sock, uaddr, addr_len);
|
||||
}
|
||||
|
||||
@@ -464,9 +464,9 @@ int inet_bind_sk(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
||||
return __inet_bind(sk, uaddr, addr_len, flags);
|
||||
}
|
||||
|
||||
int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
int inet_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
return inet_bind_sk(sock->sk, uaddr, addr_len);
|
||||
return inet_bind_sk(sock->sk, (struct sockaddr *)uaddr, addr_len);
|
||||
}
|
||||
EXPORT_SYMBOL(inet_bind);
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ int udp_sock_create4(struct net *net, struct udp_port_cfg *cfg,
|
||||
udp_addr.sin_family = AF_INET;
|
||||
udp_addr.sin_addr = cfg->local_ip;
|
||||
udp_addr.sin_port = cfg->local_udp_port;
|
||||
err = kernel_bind(sock, (struct sockaddr *)&udp_addr,
|
||||
err = kernel_bind(sock, (struct sockaddr_unsized *)&udp_addr,
|
||||
sizeof(udp_addr));
|
||||
if (err < 0)
|
||||
goto error;
|
||||
|
||||
@@ -465,9 +465,9 @@ int inet6_bind_sk(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
||||
}
|
||||
|
||||
/* bind for INET6 API */
|
||||
int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
int inet6_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
return inet6_bind_sk(sock->sk, uaddr, addr_len);
|
||||
return inet6_bind_sk(sock->sk, (struct sockaddr *)uaddr, addr_len);
|
||||
}
|
||||
EXPORT_SYMBOL(inet6_bind);
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ int udp_sock_create6(struct net *net, struct udp_port_cfg *cfg,
|
||||
memcpy(&udp6_addr.sin6_addr, &cfg->local_ip6,
|
||||
sizeof(udp6_addr.sin6_addr));
|
||||
udp6_addr.sin6_port = cfg->local_udp_port;
|
||||
err = kernel_bind(sock, (struct sockaddr *)&udp6_addr,
|
||||
err = kernel_bind(sock, (struct sockaddr_unsized *)&udp6_addr,
|
||||
sizeof(udp6_addr));
|
||||
if (err < 0)
|
||||
goto error;
|
||||
|
||||
@@ -563,7 +563,7 @@ static void __iucv_auto_name(struct iucv_sock *iucv)
|
||||
}
|
||||
|
||||
/* Bind an unbound socket */
|
||||
static int iucv_sock_bind(struct socket *sock, struct sockaddr *addr,
|
||||
static int iucv_sock_bind(struct socket *sock, struct sockaddr_unsized *addr,
|
||||
int addr_len)
|
||||
{
|
||||
DECLARE_SOCKADDR(struct sockaddr_iucv *, sa, addr);
|
||||
|
||||
@@ -1503,7 +1503,7 @@ static int l2tp_tunnel_sock_create(struct net *net,
|
||||
memcpy(&ip6_addr.l2tp_addr, cfg->local_ip6,
|
||||
sizeof(ip6_addr.l2tp_addr));
|
||||
ip6_addr.l2tp_conn_id = tunnel_id;
|
||||
err = kernel_bind(sock, (struct sockaddr *)&ip6_addr,
|
||||
err = kernel_bind(sock, (struct sockaddr_unsized *)&ip6_addr,
|
||||
sizeof(ip6_addr));
|
||||
if (err < 0)
|
||||
goto out;
|
||||
@@ -1530,7 +1530,7 @@ static int l2tp_tunnel_sock_create(struct net *net,
|
||||
ip_addr.l2tp_family = AF_INET;
|
||||
ip_addr.l2tp_addr = cfg->local_ip;
|
||||
ip_addr.l2tp_conn_id = tunnel_id;
|
||||
err = kernel_bind(sock, (struct sockaddr *)&ip_addr,
|
||||
err = kernel_bind(sock, (struct sockaddr_unsized *)&ip_addr,
|
||||
sizeof(ip_addr));
|
||||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
@@ -337,7 +337,7 @@ out:
|
||||
* otherwise all hell will break loose.
|
||||
* Returns: 0 upon success, negative otherwise.
|
||||
*/
|
||||
static int llc_ui_bind(struct socket *sock, struct sockaddr *uaddr, int addrlen)
|
||||
static int llc_ui_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addrlen)
|
||||
{
|
||||
struct sockaddr_llc *addr = (struct sockaddr_llc *)uaddr;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -49,7 +49,7 @@ static bool mctp_sockaddr_ext_is_ok(const struct sockaddr_mctp_ext *addr)
|
||||
!addr->__smctp_pad0[2];
|
||||
}
|
||||
|
||||
static int mctp_bind(struct socket *sock, struct sockaddr *addr, int addrlen)
|
||||
static int mctp_bind(struct socket *sock, struct sockaddr_unsized *addr, int addrlen)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct mctp_sock *msk = container_of(sk, struct mctp_sock, sk);
|
||||
|
||||
@@ -205,7 +205,7 @@ static void __mctp_route_test_init(struct kunit *test,
|
||||
addr.smctp_network = netid;
|
||||
addr.smctp_addr.s_addr = 8;
|
||||
addr.smctp_type = 0;
|
||||
rc = kernel_bind(sock, (struct sockaddr *)&addr, sizeof(addr));
|
||||
rc = kernel_bind(sock, (struct sockaddr_unsized *)&addr, sizeof(addr));
|
||||
KUNIT_ASSERT_EQ(test, rc, 0);
|
||||
|
||||
*devp = dev;
|
||||
|
||||
@@ -3856,7 +3856,7 @@ static struct proto mptcp_prot = {
|
||||
.no_autobind = true,
|
||||
};
|
||||
|
||||
static int mptcp_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int mptcp_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct mptcp_sock *msk = mptcp_sk(sock->sk);
|
||||
struct sock *ssk, *sk = sock->sk;
|
||||
@@ -3870,10 +3870,10 @@ static int mptcp_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
}
|
||||
|
||||
if (sk->sk_family == AF_INET)
|
||||
err = inet_bind_sk(ssk, uaddr, addr_len);
|
||||
err = inet_bind_sk(ssk, (struct sockaddr *)uaddr, addr_len);
|
||||
#if IS_ENABLED(CONFIG_MPTCP_IPV6)
|
||||
else if (sk->sk_family == AF_INET6)
|
||||
err = inet6_bind_sk(ssk, uaddr, addr_len);
|
||||
err = inet6_bind_sk(ssk, (struct sockaddr *)uaddr, addr_len);
|
||||
#endif
|
||||
if (!err)
|
||||
mptcp_copy_inaddrs(sk, ssk);
|
||||
|
||||
@@ -1660,7 +1660,7 @@ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_pm_local *local,
|
||||
addrlen = sizeof(struct sockaddr_in6);
|
||||
#endif
|
||||
ssk->sk_bound_dev_if = local->ifindex;
|
||||
err = kernel_bind(sf, (struct sockaddr *)&addr, addrlen);
|
||||
err = kernel_bind(sf, (struct sockaddr_unsized *)&addr, addrlen);
|
||||
if (err) {
|
||||
MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_JOINSYNTXBINDERR);
|
||||
pr_debug("msk=%p local=%d remote=%d bind error: %d\n",
|
||||
|
||||
@@ -1435,7 +1435,7 @@ static int bind_mcastif_addr(struct socket *sock, struct net_device *dev)
|
||||
sin.sin_addr.s_addr = addr;
|
||||
sin.sin_port = 0;
|
||||
|
||||
return kernel_bind(sock, (struct sockaddr *)&sin, sizeof(sin));
|
||||
return kernel_bind(sock, (struct sockaddr_unsized *)&sin, sizeof(sin));
|
||||
}
|
||||
|
||||
static void get_mcast_sockaddr(union ipvs_sockaddr *sa, int *salen,
|
||||
@@ -1542,7 +1542,7 @@ static int make_receive_sock(struct netns_ipvs *ipvs, int id,
|
||||
|
||||
get_mcast_sockaddr(&mcast_addr, &salen, &ipvs->bcfg, id);
|
||||
sock->sk->sk_bound_dev_if = dev->ifindex;
|
||||
result = kernel_bind(sock, (struct sockaddr *)&mcast_addr, salen);
|
||||
result = kernel_bind(sock, (struct sockaddr_unsized *)&mcast_addr, salen);
|
||||
if (result < 0) {
|
||||
pr_err("Error binding to the multicast addr\n");
|
||||
goto error;
|
||||
|
||||
@@ -966,7 +966,7 @@ static void netlink_undo_bind(int group, long unsigned int groups,
|
||||
nlk->netlink_unbind(sock_net(sk), undo + 1);
|
||||
}
|
||||
|
||||
static int netlink_bind(struct socket *sock, struct sockaddr *addr,
|
||||
static int netlink_bind(struct socket *sock, struct sockaddr_unsized *addr,
|
||||
int addr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -561,7 +561,7 @@ static int nr_release(struct socket *sock)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nr_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int nr_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct nr_sock *nr = nr_sk(sk);
|
||||
|
||||
@@ -56,7 +56,7 @@ static struct proto llcp_sock_proto = {
|
||||
.obj_size = sizeof(struct nfc_llcp_sock),
|
||||
};
|
||||
|
||||
static int llcp_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
|
||||
static int llcp_sock_bind(struct socket *sock, struct sockaddr_unsized *addr, int alen)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk);
|
||||
@@ -146,7 +146,7 @@ error:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int llcp_raw_sock_bind(struct socket *sock, struct sockaddr *addr,
|
||||
static int llcp_raw_sock_bind(struct socket *sock, struct sockaddr_unsized *addr,
|
||||
int alen)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -3279,11 +3279,12 @@ out_unlock:
|
||||
* Bind a packet socket to a device
|
||||
*/
|
||||
|
||||
static int packet_bind_spkt(struct socket *sock, struct sockaddr *uaddr,
|
||||
static int packet_bind_spkt(struct socket *sock, struct sockaddr_unsized *uaddr,
|
||||
int addr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
char name[sizeof(uaddr->sa_data_min) + 1];
|
||||
struct sockaddr *sa = (struct sockaddr *)uaddr;
|
||||
char name[sizeof(sa->sa_data_min) + 1];
|
||||
|
||||
/*
|
||||
* Check legality
|
||||
@@ -3294,13 +3295,13 @@ static int packet_bind_spkt(struct socket *sock, struct sockaddr *uaddr,
|
||||
/* uaddr->sa_data comes from the userspace, it's not guaranteed to be
|
||||
* zero-terminated.
|
||||
*/
|
||||
memcpy(name, uaddr->sa_data, sizeof(uaddr->sa_data_min));
|
||||
name[sizeof(uaddr->sa_data_min)] = 0;
|
||||
memcpy(name, sa->sa_data, sizeof(sa->sa_data_min));
|
||||
name[sizeof(sa->sa_data_min)] = 0;
|
||||
|
||||
return packet_do_bind(sk, name, 0, 0);
|
||||
}
|
||||
|
||||
static int packet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int packet_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct sockaddr_ll *sll = (struct sockaddr_ll *)uaddr;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -153,7 +153,7 @@ EXPORT_SYMBOL(pn_sock_unhash);
|
||||
|
||||
static DEFINE_MUTEX(port_mutex);
|
||||
|
||||
static int pn_socket_bind(struct socket *sock, struct sockaddr *addr, int len)
|
||||
static int pn_socket_bind(struct socket *sock, struct sockaddr_unsized *addr, int len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct pn_sock *pn = pn_sk(sk);
|
||||
@@ -163,7 +163,7 @@ static int pn_socket_bind(struct socket *sock, struct sockaddr *addr, int len)
|
||||
u8 saddr;
|
||||
|
||||
if (sk->sk_prot->bind)
|
||||
return sk->sk_prot->bind(sk, addr, len);
|
||||
return sk->sk_prot->bind(sk, (struct sockaddr *)addr, len);
|
||||
|
||||
if (len < sizeof(struct sockaddr_pn))
|
||||
return -EINVAL;
|
||||
@@ -206,8 +206,8 @@ static int pn_socket_autobind(struct socket *sock)
|
||||
|
||||
memset(&sa, 0, sizeof(sa));
|
||||
sa.spn_family = AF_PHONET;
|
||||
err = pn_socket_bind(sock, (struct sockaddr *)&sa,
|
||||
sizeof(struct sockaddr_pn));
|
||||
err = pn_socket_bind(sock, (struct sockaddr_unsized *)&sa,
|
||||
sizeof(struct sockaddr_pn));
|
||||
if (err != -EINVAL)
|
||||
return err;
|
||||
BUG_ON(!pn_port(pn_sk(sock->sk)->sobject));
|
||||
|
||||
@@ -824,7 +824,7 @@ static int qrtr_autobind(struct socket *sock)
|
||||
}
|
||||
|
||||
/* Bind socket to specified sockaddr. */
|
||||
static int qrtr_bind(struct socket *sock, struct sockaddr *saddr, int len)
|
||||
static int qrtr_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len)
|
||||
{
|
||||
DECLARE_SOCKADDR(struct sockaddr_qrtr *, addr, saddr);
|
||||
struct qrtr_sock *ipc = qrtr_sk(sock->sk);
|
||||
|
||||
@@ -714,7 +714,7 @@ int qrtr_ns_init(void)
|
||||
sq.sq_port = QRTR_PORT_CTRL;
|
||||
qrtr_ns.local_node = sq.sq_node;
|
||||
|
||||
ret = kernel_bind(qrtr_ns.sock, (struct sockaddr *)&sq, sizeof(sq));
|
||||
ret = kernel_bind(qrtr_ns.sock, (struct sockaddr_unsized *)&sq, sizeof(sq));
|
||||
if (ret < 0) {
|
||||
pr_err("failed to bind to socket\n");
|
||||
goto err_wq;
|
||||
|
||||
@@ -160,7 +160,7 @@ void rds_remove_bound(struct rds_sock *rs)
|
||||
rs->rs_bound_addr = in6addr_any;
|
||||
}
|
||||
|
||||
int rds_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
int rds_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct rds_sock *rs = rds_sk_to_rs(sk);
|
||||
|
||||
@@ -735,7 +735,7 @@ extern wait_queue_head_t rds_poll_waitq;
|
||||
|
||||
|
||||
/* bind.c */
|
||||
int rds_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len);
|
||||
int rds_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len);
|
||||
void rds_remove_bound(struct rds_sock *rs);
|
||||
struct rds_sock *rds_find_bound(const struct in6_addr *addr, __be16 port,
|
||||
__u32 scope_id);
|
||||
|
||||
@@ -145,7 +145,7 @@ int rds_tcp_conn_path_connect(struct rds_conn_path *cp)
|
||||
addrlen = sizeof(sin);
|
||||
}
|
||||
|
||||
ret = kernel_bind(sock, addr, addrlen);
|
||||
ret = kernel_bind(sock, (struct sockaddr_unsized *)addr, addrlen);
|
||||
if (ret) {
|
||||
rdsdebug("bind failed with %d at address %pI6c\n",
|
||||
ret, &conn->c_laddr);
|
||||
|
||||
@@ -290,7 +290,7 @@ struct socket *rds_tcp_listen_init(struct net *net, bool isv6)
|
||||
addr_len = sizeof(*sin);
|
||||
}
|
||||
|
||||
ret = kernel_bind(sock, (struct sockaddr *)&ss, addr_len);
|
||||
ret = kernel_bind(sock, (struct sockaddr_unsized *)&ss, addr_len);
|
||||
if (ret < 0) {
|
||||
rdsdebug("could not bind %s listener socket: %d\n",
|
||||
isv6 ? "IPv6" : "IPv4", ret);
|
||||
|
||||
@@ -693,7 +693,7 @@ static int rose_release(struct socket *sock)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rose_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int rose_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct rose_sock *rose = rose_sk(sk);
|
||||
|
||||
@@ -127,7 +127,7 @@ static int rxrpc_validate_address(struct rxrpc_sock *rx,
|
||||
/*
|
||||
* bind a local address to an RxRPC socket
|
||||
*/
|
||||
static int rxrpc_bind(struct socket *sock, struct sockaddr *saddr, int len)
|
||||
static int rxrpc_bind(struct socket *sock, struct sockaddr_unsized *saddr, int len)
|
||||
{
|
||||
struct sockaddr_rxrpc *srx = (struct sockaddr_rxrpc *)saddr;
|
||||
struct rxrpc_local *local;
|
||||
|
||||
@@ -211,7 +211,7 @@ static int rxperf_open_socket(void)
|
||||
|
||||
ret = rxrpc_sock_set_security_keyring(socket->sk, rxperf_sec_keyring);
|
||||
|
||||
ret = kernel_bind(socket, (struct sockaddr *)&srx, sizeof(srx));
|
||||
ret = kernel_bind(socket, (struct sockaddr_unsized *)&srx, sizeof(srx));
|
||||
if (ret < 0)
|
||||
goto error_2;
|
||||
|
||||
|
||||
@@ -421,7 +421,7 @@ static struct sock *smc_sock_alloc(struct net *net, struct socket *sock,
|
||||
return sk;
|
||||
}
|
||||
|
||||
int smc_bind(struct socket *sock, struct sockaddr *uaddr,
|
||||
int smc_bind(struct socket *sock, struct sockaddr_unsized *uaddr,
|
||||
int addr_len)
|
||||
{
|
||||
struct sockaddr_in *addr = (struct sockaddr_in *)uaddr;
|
||||
|
||||
@@ -42,7 +42,7 @@ void smc_unhash_sk(struct sock *sk);
|
||||
void smc_release_cb(struct sock *sk);
|
||||
|
||||
int smc_release(struct socket *sock);
|
||||
int smc_bind(struct socket *sock, struct sockaddr *uaddr,
|
||||
int smc_bind(struct socket *sock, struct sockaddr_unsized *uaddr,
|
||||
int addr_len);
|
||||
int smc_connect(struct socket *sock, struct sockaddr *addr,
|
||||
int alen, int flags);
|
||||
|
||||
@@ -1872,7 +1872,7 @@ int __sys_bind_socket(struct socket *sock, struct sockaddr_storage *address,
|
||||
addrlen);
|
||||
if (!err)
|
||||
err = READ_ONCE(sock->ops)->bind(sock,
|
||||
(struct sockaddr *)address,
|
||||
(struct sockaddr_unsized *)address,
|
||||
addrlen);
|
||||
return err;
|
||||
}
|
||||
@@ -3583,13 +3583,13 @@ static long compat_sock_ioctl(struct file *file, unsigned int cmd,
|
||||
* Returns 0 or an error.
|
||||
*/
|
||||
|
||||
int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen)
|
||||
int kernel_bind(struct socket *sock, struct sockaddr_unsized *addr, int addrlen)
|
||||
{
|
||||
struct sockaddr_storage address;
|
||||
|
||||
memcpy(&address, addr, addrlen);
|
||||
|
||||
return READ_ONCE(sock->ops)->bind(sock, (struct sockaddr *)&address,
|
||||
return READ_ONCE(sock->ops)->bind(sock, (struct sockaddr_unsized *)&address,
|
||||
addrlen);
|
||||
}
|
||||
EXPORT_SYMBOL(kernel_bind);
|
||||
|
||||
@@ -1457,12 +1457,12 @@ static int rpc_sockname(struct net *net, struct sockaddr *sap, size_t salen,
|
||||
switch (sap->sa_family) {
|
||||
case AF_INET:
|
||||
err = kernel_bind(sock,
|
||||
(struct sockaddr *)&rpc_inaddr_loopback,
|
||||
(struct sockaddr_unsized *)&rpc_inaddr_loopback,
|
||||
sizeof(rpc_inaddr_loopback));
|
||||
break;
|
||||
case AF_INET6:
|
||||
err = kernel_bind(sock,
|
||||
(struct sockaddr *)&rpc_in6addr_loopback,
|
||||
(struct sockaddr_unsized *)&rpc_in6addr_loopback,
|
||||
sizeof(rpc_in6addr_loopback));
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -1557,7 +1557,7 @@ static struct svc_xprt *svc_create_socket(struct svc_serv *serv,
|
||||
ip6_sock_set_v6only(sock->sk);
|
||||
if (type == SOCK_STREAM)
|
||||
sock->sk->sk_reuse = SK_CAN_REUSE; /* allow address reuse */
|
||||
error = kernel_bind(sock, sin, len);
|
||||
error = kernel_bind(sock, (struct sockaddr_unsized *)sin, len);
|
||||
if (error < 0)
|
||||
goto bummer;
|
||||
|
||||
|
||||
@@ -1845,8 +1845,8 @@ static int xs_bind(struct sock_xprt *transport, struct socket *sock)
|
||||
memcpy(&myaddr, &transport->srcaddr, transport->xprt.addrlen);
|
||||
do {
|
||||
rpc_set_port((struct sockaddr *)&myaddr, port);
|
||||
err = kernel_bind(sock, (struct sockaddr *)&myaddr,
|
||||
transport->xprt.addrlen);
|
||||
err = kernel_bind(sock, (struct sockaddr_unsized *)&myaddr,
|
||||
transport->xprt.addrlen);
|
||||
if (err == 0) {
|
||||
if (transport->xprt.reuseport)
|
||||
transport->srcport = port;
|
||||
|
||||
@@ -710,7 +710,7 @@ int tipc_sk_bind(struct socket *sock, struct sockaddr *skaddr, int alen)
|
||||
return res;
|
||||
}
|
||||
|
||||
static int tipc_bind(struct socket *sock, struct sockaddr *skaddr, int alen)
|
||||
static int tipc_bind(struct socket *sock, struct sockaddr_unsized *skaddr, int alen)
|
||||
{
|
||||
struct tipc_uaddr *ua = (struct tipc_uaddr *)skaddr;
|
||||
u32 atype = ua->addrtype;
|
||||
@@ -726,7 +726,7 @@ static int tipc_bind(struct socket *sock, struct sockaddr *skaddr, int alen)
|
||||
return -EACCES;
|
||||
}
|
||||
}
|
||||
return tipc_sk_bind(sock, skaddr, alen);
|
||||
return tipc_sk_bind(sock, (struct sockaddr *)skaddr, alen);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -843,7 +843,7 @@ out:
|
||||
}
|
||||
|
||||
static int unix_release(struct socket *);
|
||||
static int unix_bind(struct socket *, struct sockaddr *, int);
|
||||
static int unix_bind(struct socket *, struct sockaddr_unsized *, int);
|
||||
static int unix_stream_connect(struct socket *, struct sockaddr *,
|
||||
int addr_len, int flags);
|
||||
static int unix_socketpair(struct socket *, struct socket *);
|
||||
@@ -1466,7 +1466,7 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int unix_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct sockaddr_un *sunaddr = (struct sockaddr_un *)uaddr;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -987,7 +987,7 @@ static int vsock_release(struct socket *sock)
|
||||
}
|
||||
|
||||
static int
|
||||
vsock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
||||
vsock_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len)
|
||||
{
|
||||
int err;
|
||||
struct sock *sk;
|
||||
@@ -995,7 +995,7 @@ vsock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
||||
|
||||
sk = sock->sk;
|
||||
|
||||
if (vsock_addr_cast(addr, addr_len, &vm_addr) != 0)
|
||||
if (vsock_addr_cast((struct sockaddr *)addr, addr_len, &vm_addr) != 0)
|
||||
return -EINVAL;
|
||||
|
||||
lock_sock(sk);
|
||||
|
||||
@@ -670,7 +670,7 @@ out:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int x25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
static int x25_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int addr_len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct sockaddr_x25 *addr = (struct sockaddr_x25 *)uaddr;
|
||||
|
||||
@@ -1238,7 +1238,7 @@ static bool xsk_validate_queues(struct xdp_sock *xs)
|
||||
return xs->fq_tmp && xs->cq_tmp;
|
||||
}
|
||||
|
||||
static int xsk_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
||||
static int xsk_bind(struct socket *sock, struct sockaddr_unsized *addr, int addr_len)
|
||||
{
|
||||
struct sockaddr_xdp *sxdp = (struct sockaddr_xdp *)addr;
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
@@ -923,7 +923,7 @@ __bpf_kfunc int bpf_kfunc_call_kernel_bind(struct addr_args *args)
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = kernel_bind(sock, (struct sockaddr *)&args->addr, args->addrlen);
|
||||
err = kernel_bind(sock, (struct sockaddr_unsized *)&args->addr, args->addrlen);
|
||||
out:
|
||||
mutex_unlock(&sock_lock);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user