net: core: Convert inet_addr_is_any() to sockaddr_storage
Subsystems (6)
PATCH v3 1/1 net: core: Convert inet_addr_is_any() to sockaddr_storage
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 <[email protected]>
Reviewed-by Simon Horman <[email protected]>
Signed-off-by Kees Cook <[email protected]>
--- 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(-)
include/linux/inet.h +1 -1
@@ -55,6 +55,6 @@ extern int in6_pton(const char *src, int srclen, u8 *dst, int delim, const charextern 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 */
drivers/nvme/target/rdma.c +1 -1
@@ -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;
drivers/nvme/target/tcp.c +1 -1
@@ -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;
drivers/target/iscsi/iscsi_target.c +1 -1
@@ -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;
net/core/utils.c +4 -4
@@ -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;
Signature · 1 line
2.34.1
Quoted 7 lines · Kees Cook
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 <[email protected]>Reviewed-by Simon Horman <[email protected]>Signed-off-by Kees Cook <[email protected]>
Thanks!
-Gustavo
Quoted 91 lines
--- 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(-)include/linux/inet.h +1
-1@@ -55,6 +55,6 @@ extern int in6_pton(const char *src, int srclen, u8 *dst, int delim, const charextern 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 */ drivers/nvme/target/rdma.c +1
-1@@ -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;drivers/nvme/target/tcp.c +1
-1@@ -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;drivers/target/iscsi/iscsi_target.c +1
-1@@ -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;net/core/utils.c +4
-4@@ -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;
Kees,
Quoted 3 lines
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 <[email protected]> # SCSI
Signature · 1 line
Martin K. Petersen