* [PATCH net-next v3] net: core: Convert inet_addr_is_any() to sockaddr_storage
@ 2025-05-20 17:34 Kees Cook
2025-05-20 18:42 ` Gustavo A. R. Silva
2025-05-21 1:23 ` Martin K. Petersen
0 siblings, 2 replies; 3+ messages in thread
From: Kees Cook @ 2025-05-20 17:34 UTC (permalink / raw)
To: Jakub Kicinski
Cc: Kees Cook, Christoph Hellwig, Simon Horman, Sagi Grimberg,
Chaitanya Kulkarni, Martin K. Petersen, David S. Miller,
Eric Dumazet, Paolo Abeni, Dmitry Bogdanov, Maurizio Lombardi,
Dr. David Alan Gilbert, Eric Biggers, Al Viro, linux-kernel,
linux-nvme, linux-scsi, target-devel, netdev, linux-hardening
All the callers of inet_addr_is_any() have a sockaddr_storage-backed
sockaddr. Avoid casts and switch prototype to the actual object being
used.
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Kees Cook <kees@kernel.org>
---
include/linux/inet.h | 2 +-
drivers/nvme/target/rdma.c | 2 +-
drivers/nvme/target/tcp.c | 2 +-
drivers/target/iscsi/iscsi_target.c | 2 +-
net/core/utils.c | 8 ++++----
5 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/include/linux/inet.h b/include/linux/inet.h
index bd8276e96e60..9158772f3559 100644
--- a/include/linux/inet.h
+++ b/include/linux/inet.h
@@ -55,6 +55,6 @@ extern int in6_pton(const char *src, int srclen, u8 *dst, int delim, const char
extern int inet_pton_with_scope(struct net *net, unsigned short af,
const char *src, const char *port, struct sockaddr_storage *addr);
-extern bool inet_addr_is_any(struct sockaddr *addr);
+bool inet_addr_is_any(struct sockaddr_storage *addr);
#endif /* _LINUX_INET_H */
diff --git a/drivers/nvme/target/rdma.c b/drivers/nvme/target/rdma.c
index 2a4536ef6184..79a5aad2e9d0 100644
--- a/drivers/nvme/target/rdma.c
+++ b/drivers/nvme/target/rdma.c
@@ -1999,7 +1999,7 @@ static void nvmet_rdma_disc_port_addr(struct nvmet_req *req,
struct nvmet_rdma_port *port = nport->priv;
struct rdma_cm_id *cm_id = port->cm_id;
- if (inet_addr_is_any((struct sockaddr *)&cm_id->route.addr.src_addr)) {
+ if (inet_addr_is_any(&cm_id->route.addr.src_addr)) {
struct nvmet_rdma_rsp *rsp =
container_of(req, struct nvmet_rdma_rsp, req);
struct rdma_cm_id *req_cm_id = rsp->queue->cm_id;
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
index 12a5cb8641ca..5cd1cf74f8ff 100644
--- a/drivers/nvme/target/tcp.c
+++ b/drivers/nvme/target/tcp.c
@@ -2194,7 +2194,7 @@ static void nvmet_tcp_disc_port_addr(struct nvmet_req *req,
{
struct nvmet_tcp_port *port = nport->priv;
- if (inet_addr_is_any((struct sockaddr *)&port->addr)) {
+ if (inet_addr_is_any(&port->addr)) {
struct nvmet_tcp_cmd *cmd =
container_of(req, struct nvmet_tcp_cmd, req);
struct nvmet_tcp_queue *queue = cmd->queue;
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index 620ba6e0ab07..a2dde08c8a62 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -3419,7 +3419,7 @@ iscsit_build_sendtargets_response(struct iscsit_cmd *cmd,
}
}
- if (inet_addr_is_any((struct sockaddr *)&np->np_sockaddr))
+ if (inet_addr_is_any(&np->np_sockaddr))
sockaddr = &conn->local_sockaddr;
else
sockaddr = &np->np_sockaddr;
diff --git a/net/core/utils.c b/net/core/utils.c
index 27f4cffaae05..e47feeaa5a49 100644
--- a/net/core/utils.c
+++ b/net/core/utils.c
@@ -399,9 +399,9 @@ int inet_pton_with_scope(struct net *net, __kernel_sa_family_t af,
}
EXPORT_SYMBOL(inet_pton_with_scope);
-bool inet_addr_is_any(struct sockaddr *addr)
+bool inet_addr_is_any(struct sockaddr_storage *addr)
{
- if (addr->sa_family == AF_INET6) {
+ if (addr->ss_family == AF_INET6) {
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)addr;
const struct sockaddr_in6 in6_any =
{ .sin6_addr = IN6ADDR_ANY_INIT };
@@ -409,13 +409,13 @@ bool inet_addr_is_any(struct sockaddr *addr)
if (!memcmp(in6->sin6_addr.s6_addr,
in6_any.sin6_addr.s6_addr, 16))
return true;
- } else if (addr->sa_family == AF_INET) {
+ } else if (addr->ss_family == AF_INET) {
struct sockaddr_in *in = (struct sockaddr_in *)addr;
if (in->sin_addr.s_addr == htonl(INADDR_ANY))
return true;
} else {
- pr_warn("unexpected address family %u\n", addr->sa_family);
+ pr_warn("unexpected address family %u\n", addr->ss_family);
}
return false;
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next v3] net: core: Convert inet_addr_is_any() to sockaddr_storage
2025-05-20 17:34 [PATCH net-next v3] net: core: Convert inet_addr_is_any() to sockaddr_storage Kees Cook
@ 2025-05-20 18:42 ` Gustavo A. R. Silva
2025-05-21 1:23 ` Martin K. Petersen
1 sibling, 0 replies; 3+ messages in thread
From: Gustavo A. R. Silva @ 2025-05-20 18:42 UTC (permalink / raw)
To: Kees Cook, Jakub Kicinski
Cc: Christoph Hellwig, Simon Horman, Sagi Grimberg,
Chaitanya Kulkarni, Martin K. Petersen, David S. Miller,
Eric Dumazet, Paolo Abeni, Dmitry Bogdanov, Maurizio Lombardi,
Dr. David Alan Gilbert, Eric Biggers, Al Viro, linux-kernel,
linux-nvme, linux-scsi, target-devel, netdev, linux-hardening
On 20/05/25 11:34, Kees Cook wrote:
> All the callers of inet_addr_is_any() have a sockaddr_storage-backed
> sockaddr. Avoid casts and switch prototype to the actual object being
> used.
>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Simon Horman <horms@kernel.org>
> Signed-off-by: Kees Cook <kees@kernel.org>
Acked-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Thanks!
-Gustavo
> ---
> include/linux/inet.h | 2 +-
> drivers/nvme/target/rdma.c | 2 +-
> drivers/nvme/target/tcp.c | 2 +-
> drivers/target/iscsi/iscsi_target.c | 2 +-
> net/core/utils.c | 8 ++++----
> 5 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/include/linux/inet.h b/include/linux/inet.h
> index bd8276e96e60..9158772f3559 100644
> --- a/include/linux/inet.h
> +++ b/include/linux/inet.h
> @@ -55,6 +55,6 @@ extern int in6_pton(const char *src, int srclen, u8 *dst, int delim, const char
>
> extern int inet_pton_with_scope(struct net *net, unsigned short af,
> const char *src, const char *port, struct sockaddr_storage *addr);
> -extern bool inet_addr_is_any(struct sockaddr *addr);
> +bool inet_addr_is_any(struct sockaddr_storage *addr);
>
> #endif /* _LINUX_INET_H */
> diff --git a/drivers/nvme/target/rdma.c b/drivers/nvme/target/rdma.c
> index 2a4536ef6184..79a5aad2e9d0 100644
> --- a/drivers/nvme/target/rdma.c
> +++ b/drivers/nvme/target/rdma.c
> @@ -1999,7 +1999,7 @@ static void nvmet_rdma_disc_port_addr(struct nvmet_req *req,
> struct nvmet_rdma_port *port = nport->priv;
> struct rdma_cm_id *cm_id = port->cm_id;
>
> - if (inet_addr_is_any((struct sockaddr *)&cm_id->route.addr.src_addr)) {
> + if (inet_addr_is_any(&cm_id->route.addr.src_addr)) {
> struct nvmet_rdma_rsp *rsp =
> container_of(req, struct nvmet_rdma_rsp, req);
> struct rdma_cm_id *req_cm_id = rsp->queue->cm_id;
> diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
> index 12a5cb8641ca..5cd1cf74f8ff 100644
> --- a/drivers/nvme/target/tcp.c
> +++ b/drivers/nvme/target/tcp.c
> @@ -2194,7 +2194,7 @@ static void nvmet_tcp_disc_port_addr(struct nvmet_req *req,
> {
> struct nvmet_tcp_port *port = nport->priv;
>
> - if (inet_addr_is_any((struct sockaddr *)&port->addr)) {
> + if (inet_addr_is_any(&port->addr)) {
> struct nvmet_tcp_cmd *cmd =
> container_of(req, struct nvmet_tcp_cmd, req);
> struct nvmet_tcp_queue *queue = cmd->queue;
> diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
> index 620ba6e0ab07..a2dde08c8a62 100644
> --- a/drivers/target/iscsi/iscsi_target.c
> +++ b/drivers/target/iscsi/iscsi_target.c
> @@ -3419,7 +3419,7 @@ iscsit_build_sendtargets_response(struct iscsit_cmd *cmd,
> }
> }
>
> - if (inet_addr_is_any((struct sockaddr *)&np->np_sockaddr))
> + if (inet_addr_is_any(&np->np_sockaddr))
> sockaddr = &conn->local_sockaddr;
> else
> sockaddr = &np->np_sockaddr;
> diff --git a/net/core/utils.c b/net/core/utils.c
> index 27f4cffaae05..e47feeaa5a49 100644
> --- a/net/core/utils.c
> +++ b/net/core/utils.c
> @@ -399,9 +399,9 @@ int inet_pton_with_scope(struct net *net, __kernel_sa_family_t af,
> }
> EXPORT_SYMBOL(inet_pton_with_scope);
>
> -bool inet_addr_is_any(struct sockaddr *addr)
> +bool inet_addr_is_any(struct sockaddr_storage *addr)
> {
> - if (addr->sa_family == AF_INET6) {
> + if (addr->ss_family == AF_INET6) {
> struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)addr;
> const struct sockaddr_in6 in6_any =
> { .sin6_addr = IN6ADDR_ANY_INIT };
> @@ -409,13 +409,13 @@ bool inet_addr_is_any(struct sockaddr *addr)
> if (!memcmp(in6->sin6_addr.s6_addr,
> in6_any.sin6_addr.s6_addr, 16))
> return true;
> - } else if (addr->sa_family == AF_INET) {
> + } else if (addr->ss_family == AF_INET) {
> struct sockaddr_in *in = (struct sockaddr_in *)addr;
>
> if (in->sin_addr.s_addr == htonl(INADDR_ANY))
> return true;
> } else {
> - pr_warn("unexpected address family %u\n", addr->sa_family);
> + pr_warn("unexpected address family %u\n", addr->ss_family);
> }
>
> return false;
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next v3] net: core: Convert inet_addr_is_any() to sockaddr_storage
2025-05-20 17:34 [PATCH net-next v3] net: core: Convert inet_addr_is_any() to sockaddr_storage Kees Cook
2025-05-20 18:42 ` Gustavo A. R. Silva
@ 2025-05-21 1:23 ` Martin K. Petersen
1 sibling, 0 replies; 3+ messages in thread
From: Martin K. Petersen @ 2025-05-21 1:23 UTC (permalink / raw)
To: Kees Cook
Cc: Jakub Kicinski, Christoph Hellwig, Simon Horman, Sagi Grimberg,
Chaitanya Kulkarni, Martin K. Petersen, David S. Miller,
Eric Dumazet, Paolo Abeni, Dmitry Bogdanov, Maurizio Lombardi,
Dr. David Alan Gilbert, Eric Biggers, Al Viro, linux-kernel,
linux-nvme, linux-scsi, target-devel, netdev, linux-hardening
Kees,
> All the callers of inet_addr_is_any() have a sockaddr_storage-backed
> sockaddr. Avoid casts and switch prototype to the actual object being
> used.
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> # SCSI
--
Martin K. Petersen
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-05-21 1:24 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-20 17:34 [PATCH net-next v3] net: core: Convert inet_addr_is_any() to sockaddr_storage Kees Cook
2025-05-20 18:42 ` Gustavo A. R. Silva
2025-05-21 1:23 ` Martin K. Petersen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).