Skip to content

Commit 7815e32

Browse files
keesKernel Patches Daemon
authored andcommitted
net: Convert proto_ops bind() callbacks to use sockaddr_unspec
Update all struct proto_ops bind() callback function prototypes from "struct sockaddr *" to "struct sockaddr_unspec *" 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 <[email protected]>
1 parent beafc54 commit 7815e32

File tree

74 files changed

+113
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+113
-112
lines changed

crypto/af_alg.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ void af_alg_release_parent(struct sock *sk)
145145
}
146146
EXPORT_SYMBOL_GPL(af_alg_release_parent);
147147

148-
static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
148+
static int alg_bind(struct socket *sock, struct sockaddr_unspec *uaddr, int addr_len)
149149
{
150150
const u32 allowed = CRYPTO_ALG_KERN_DRIVER_ONLY;
151151
struct sock *sk = sock->sk;

drivers/block/drbd/drbd_receiver.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ static struct socket *drbd_try_connect(struct drbd_connection *connection)
450450
* a free one dynamically.
451451
*/
452452
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_unspec *) &src_in6, my_addr_len);
454454
if (err < 0)
455455
goto out;
456456

@@ -537,7 +537,7 @@ static int prepare_listen_socket(struct drbd_connection *connection, struct acce
537537
drbd_setbufsize(s_listen, sndbuf_size, rcvbuf_size);
538538

539539
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_unspec *)&my_addr, my_addr_len);
541541
if (err < 0)
542542
goto out;
543543

drivers/infiniband/hw/erdma/erdma_cm.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -993,7 +993,7 @@ static int kernel_bindconnect(struct socket *s, struct sockaddr *laddr,
993993
int ret;
994994

995995
sock_set_reuseaddr(s->sk);
996-
ret = s->ops->bind(s, laddr, laddrlen);
996+
ret = s->ops->bind(s, (struct sockaddr_unspec *)laddr, laddrlen);
997997
if (ret)
998998
return ret;
999999
ret = s->ops->connect(s, raddr, raddrlen, flags);
@@ -1315,7 +1315,7 @@ int erdma_create_listen(struct iw_cm_id *id, int backlog)
13151315
if (ipv4_is_zeronet(laddr->sin_addr.s_addr))
13161316
s->sk->sk_bound_dev_if = dev->netdev->ifindex;
13171317

1318-
ret = s->ops->bind(s, (struct sockaddr *)laddr,
1318+
ret = s->ops->bind(s, (struct sockaddr_unspec *)laddr,
13191319
sizeof(struct sockaddr_in));
13201320
if (ret)
13211321
goto error;

drivers/infiniband/sw/siw/siw_cm.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,7 +1340,7 @@ static int kernel_bindconnect(struct socket *s, struct sockaddr *laddr,
13401340
return rv;
13411341
}
13421342

1343-
rv = s->ops->bind(s, laddr, size);
1343+
rv = s->ops->bind(s, (struct sockaddr_unspec *)laddr, size);
13441344
if (rv < 0)
13451345
return rv;
13461346

@@ -1789,7 +1789,7 @@ int siw_create_listen(struct iw_cm_id *id, int backlog)
17891789
goto error;
17901790
}
17911791
}
1792-
rv = s->ops->bind(s, (struct sockaddr *)laddr,
1792+
rv = s->ops->bind(s, (struct sockaddr_unspec *)laddr,
17931793
sizeof(struct sockaddr_in));
17941794
} else {
17951795
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)
18131813
goto error;
18141814
}
18151815
}
1816-
rv = s->ops->bind(s, (struct sockaddr *)laddr,
1816+
rv = s->ops->bind(s, (struct sockaddr_unspec *)laddr,
18171817
sizeof(struct sockaddr_in6));
18181818
}
18191819
if (rv) {

drivers/isdn/mISDN/l1oip_core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ l1oip_socket_thread(void *data)
676676
hc->sin_remote.sin_port = htons((unsigned short)hc->remoteport);
677677

678678
/* bind to incoming port */
679-
if (socket->ops->bind(socket, (struct sockaddr *)&hc->sin_local,
679+
if (socket->ops->bind(socket, (struct sockaddr_unspec *)&hc->sin_local,
680680
sizeof(hc->sin_local))) {
681681
printk(KERN_ERR "%s: Failed to bind socket to port %d.\n",
682682
__func__, hc->localport);

drivers/isdn/mISDN/socket.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ static int data_sock_getsockopt(struct socket *sock, int level, int optname,
462462
}
463463

464464
static int
465-
data_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
465+
data_sock_bind(struct socket *sock, struct sockaddr_unspec *addr, int addr_len)
466466
{
467467
struct sockaddr_mISDN *maddr = (struct sockaddr_mISDN *) addr;
468468
struct sock *sk = sock->sk;
@@ -696,7 +696,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
696696
}
697697

698698
static int
699-
base_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
699+
base_sock_bind(struct socket *sock, struct sockaddr_unspec *addr, int addr_len)
700700
{
701701
struct sockaddr_mISDN *maddr = (struct sockaddr_mISDN *) addr;
702702
struct sock *sk = sock->sk;

drivers/net/ppp/pptp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,8 +382,8 @@ static int pptp_rcv(struct sk_buff *skb)
382382
return NET_RX_DROP;
383383
}
384384

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_unspec *uservaddr,
386+
int sockaddr_len)
387387
{
388388
struct sock *sk = sock->sk;
389389
struct sockaddr_pppox *sp = (struct sockaddr_pppox *) uservaddr;

drivers/nvme/host/tcp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1834,7 +1834,7 @@ static int nvme_tcp_alloc_queue(struct nvme_ctrl *nctrl, int qid,
18341834
sk_set_memalloc(queue->sock->sk);
18351835

18361836
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_unspec *)&ctrl->src_addr,
18381838
sizeof(ctrl->src_addr));
18391839
if (ret) {
18401840
dev_err(nctrl->device,

drivers/nvme/target/tcp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2055,7 +2055,7 @@ static int nvmet_tcp_add_port(struct nvmet_port *nport)
20552055
if (so_priority > 0)
20562056
sock_set_priority(port->sock->sk, so_priority);
20572057

2058-
ret = kernel_bind(port->sock, (struct sockaddr *)&port->addr,
2058+
ret = kernel_bind(port->sock, (struct sockaddr_unspec *)&port->addr,
20592059
sizeof(port->addr));
20602060
if (ret) {
20612061
pr_err("failed to bind port socket %d\n", ret);

drivers/target/iscsi/iscsi_target_login.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -822,7 +822,7 @@ int iscsit_setup_np(
822822
sock_set_reuseaddr(sock->sk);
823823
ip_sock_set_freebind(sock->sk);
824824

825-
ret = kernel_bind(sock, (struct sockaddr *)&np->np_sockaddr, len);
825+
ret = kernel_bind(sock, (struct sockaddr_unspec *)&np->np_sockaddr, len);
826826
if (ret < 0) {
827827
pr_err("kernel_bind() failed: %d\n", ret);
828828
goto fail;

0 commit comments

Comments
 (0)