This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 6b625dfdf28d8cc193fec9d4c938d76f78e5ed3b Author: zhanghongyu <[email protected]> AuthorDate: Tue Jul 29 17:25:55 2025 +0800 net/inet: replace net_lock with conn_lock Protect icmp resources through conn_lock Signed-off-by: zhanghongyu <[email protected]> --- net/inet/inet_sockif.c | 21 +++++++++++---------- net/inet/ipv4_getsockname.c | 7 ++++--- net/inet/ipv4_getsockopt.c | 5 +++-- net/inet/ipv4_setsockopt.c | 5 +++-- net/inet/ipv6_getsockname.c | 7 ++++--- net/inet/ipv6_getsockopt.c | 5 +++-- net/inet/ipv6_setsockopt.c | 5 +++-- 7 files changed, 31 insertions(+), 24 deletions(-) diff --git a/net/inet/inet_sockif.c b/net/inet/inet_sockif.c index f6c12416513..2d5c77b64f7 100644 --- a/net/inet/inet_sockif.c +++ b/net/inet/inet_sockif.c @@ -44,6 +44,7 @@ #include "icmpv6/icmpv6.h" #include "sixlowpan/sixlowpan.h" #include "socket/socket.h" +#include "utils/utils.h" #include "inet/inet.h" #ifdef HAVE_INET_SOCKETS @@ -913,7 +914,7 @@ static int inet_set_socketlevel_option(FAR struct socket *psock, int option, * options. */ - net_lock(); + conn_lock(conn); /* Set or clear the linger option bit and linger time * (in deciseconds) @@ -930,7 +931,7 @@ static int inet_set_socketlevel_option(FAR struct socket *psock, int option, conn->s_linger = 0; } - net_unlock(); + conn_unlock(conn); } break; #endif @@ -961,7 +962,7 @@ static int inet_set_socketlevel_option(FAR struct socket *psock, int option, buffersize = MIN(buffersize, CONFIG_NET_MAX_RECV_BUFSIZE); #endif - net_lock(); + conn_lock(psock->s_conn); #ifdef NET_TCP_HAVE_STACK if (psock->s_type == SOCK_STREAM) @@ -986,11 +987,11 @@ static int inet_set_socketlevel_option(FAR struct socket *psock, int option, else #endif { - net_unlock(); + conn_unlock(psock->s_conn); return -ENOPROTOOPT; } - net_unlock(); + conn_unlock(psock->s_conn); } break; #endif @@ -1022,7 +1023,7 @@ static int inet_set_socketlevel_option(FAR struct socket *psock, int option, buffersize = MIN(buffersize, CONFIG_NET_MAX_SEND_BUFSIZE); #endif - net_lock(); + conn_lock(psock->s_conn); #ifdef NET_TCP_HAVE_STACK if (psock->s_type == SOCK_STREAM) @@ -1047,11 +1048,11 @@ static int inet_set_socketlevel_option(FAR struct socket *psock, int option, else #endif { - net_unlock(); + conn_unlock(psock->s_conn); return -ENOPROTOOPT; } - net_unlock(); + conn_unlock(psock->s_conn); } break; #endif @@ -1066,7 +1067,7 @@ static int inet_set_socketlevel_option(FAR struct socket *psock, int option, if (psock->s_type == SOCK_DGRAM) { - net_lock(); + conn_lock(psock->s_conn); /* For now the timestamp enable is just boolean. * If SO_TIMESTAMPING support is added in future, it can be @@ -1076,7 +1077,7 @@ static int inet_set_socketlevel_option(FAR struct socket *psock, int option, FAR struct udp_conn_s *conn = psock->s_conn; conn->timestamp = (*((FAR int *)value) != 0); - net_unlock(); + conn_unlock(psock->s_conn); } else { diff --git a/net/inet/ipv4_getsockname.c b/net/inet/ipv4_getsockname.c index 0f1f493f0bd..b81bce5dbc0 100644 --- a/net/inet/ipv4_getsockname.c +++ b/net/inet/ipv4_getsockname.c @@ -39,6 +39,7 @@ #include "netdev/netdev.h" #include "udp/udp.h" #include "tcp/tcp.h" +#include "utils/utils.h" #include "inet/inet.h" #ifdef CONFIG_NET_IPv4 @@ -130,7 +131,7 @@ int ipv4_getsockname(FAR struct socket *psock, FAR struct sockaddr *addr, return OK; } - net_lock(); + conn_lock(psock->s_conn); /* Find the device matching the IPv4 address in the connection structure. * NOTE: listening sockets have no ripaddr. Work around is to use the @@ -146,7 +147,7 @@ int ipv4_getsockname(FAR struct socket *psock, FAR struct sockaddr *addr, if (dev == NULL) { - net_unlock(); + conn_unlock(psock->s_conn); return -EINVAL; } @@ -158,7 +159,7 @@ int ipv4_getsockname(FAR struct socket *psock, FAR struct sockaddr *addr, *addrlen = sizeof(struct sockaddr_in); - net_unlock(); + conn_unlock(psock->s_conn); /* Return success */ diff --git a/net/inet/ipv4_getsockopt.c b/net/inet/ipv4_getsockopt.c index 58e3f0069fa..c10b9005de0 100644 --- a/net/inet/ipv4_getsockopt.c +++ b/net/inet/ipv4_getsockopt.c @@ -35,6 +35,7 @@ #include <netinet/in.h> #include "netfilter/iptables.h" +#include "utils/utils.h" #ifdef CONFIG_NET_IPv4 @@ -76,7 +77,7 @@ int ipv4_getsockopt(FAR struct socket *psock, int option, ninfo("option: %d\n", option); - net_lock(); + conn_lock(psock->s_conn); switch (option) { #ifdef CONFIG_NET_IPTABLES @@ -102,7 +103,7 @@ int ipv4_getsockopt(FAR struct socket *psock, int option, break; } - net_unlock(); + conn_unlock(psock->s_conn); return ret; } diff --git a/net/inet/ipv4_setsockopt.c b/net/inet/ipv4_setsockopt.c index ff449e321f1..cd0a6bd97f6 100644 --- a/net/inet/ipv4_setsockopt.c +++ b/net/inet/ipv4_setsockopt.c @@ -41,6 +41,7 @@ #include "inet/inet.h" #include "socket/socket.h" #include "udp/udp.h" +#include "utils/utils.h" #if defined(CONFIG_NET_IPv4) && defined(CONFIG_NET_SOCKOPTS) @@ -86,7 +87,7 @@ int ipv4_setsockopt(FAR struct socket *psock, int option, * REVISIT: Clone the logic from netdev_ioctl.c here. */ - net_lock(); + conn_lock(psock->s_conn); switch (option) { #ifdef CONFIG_NET_IGMP @@ -391,7 +392,7 @@ int ipv4_setsockopt(FAR struct socket *psock, int option, break; } - net_unlock(); + conn_unlock(psock->s_conn); return ret; } diff --git a/net/inet/ipv6_getsockname.c b/net/inet/ipv6_getsockname.c index bbb7503b3df..fd8fe8fb131 100644 --- a/net/inet/ipv6_getsockname.c +++ b/net/inet/ipv6_getsockname.c @@ -39,6 +39,7 @@ #include "netdev/netdev.h" #include "udp/udp.h" #include "tcp/tcp.h" +#include "utils/utils.h" #include "inet/inet.h" #ifdef CONFIG_NET_IPv6 @@ -130,7 +131,7 @@ int ipv6_getsockname(FAR struct socket *psock, FAR struct sockaddr *addr, return OK; } - net_lock(); + conn_lock(psock->s_conn); /* Find the device matching the IPv6 address in the connection structure. * NOTE: listening sockets have no ripaddr. Work around is to use the @@ -145,7 +146,7 @@ int ipv6_getsockname(FAR struct socket *psock, FAR struct sockaddr *addr, dev = netdev_findby_ripv6addr(*lipaddr, *ripaddr); if (!dev) { - net_unlock(); + conn_unlock(psock->s_conn); return -EINVAL; } @@ -156,7 +157,7 @@ int ipv6_getsockname(FAR struct socket *psock, FAR struct sockaddr *addr, netdev_ipv6_srcaddr(dev, *lipaddr)); *addrlen = sizeof(struct sockaddr_in6); - net_unlock(); + conn_unlock(psock->s_conn); /* Return success */ diff --git a/net/inet/ipv6_getsockopt.c b/net/inet/ipv6_getsockopt.c index 0fa7289eea3..2e66365ea7d 100644 --- a/net/inet/ipv6_getsockopt.c +++ b/net/inet/ipv6_getsockopt.c @@ -38,6 +38,7 @@ #include "netfilter/iptables.h" #include "inet/inet.h" #include "udp/udp.h" +#include "utils/utils.h" #ifdef CONFIG_NET_IPv6 @@ -75,7 +76,7 @@ int ipv6_getsockopt(FAR struct socket *psock, int option, ninfo("option: %d\n", option); - net_lock(); + conn_lock(psock->s_conn); switch (option) { #ifdef CONFIG_NET_IPTABLES @@ -101,7 +102,7 @@ int ipv6_getsockopt(FAR struct socket *psock, int option, break; } - net_unlock(); + conn_unlock(psock->s_conn); return ret; } diff --git a/net/inet/ipv6_setsockopt.c b/net/inet/ipv6_setsockopt.c index 99474824e3e..adeda72bee5 100644 --- a/net/inet/ipv6_setsockopt.c +++ b/net/inet/ipv6_setsockopt.c @@ -40,6 +40,7 @@ #include "inet/inet.h" #include "socket/socket.h" #include "udp/udp.h" +#include "utils/utils.h" #if defined(CONFIG_NET_IPv6) && defined(CONFIG_NET_SOCKOPTS) @@ -83,7 +84,7 @@ int ipv6_setsockopt(FAR struct socket *psock, int option, return -EINVAL; } - net_lock(); + conn_lock(psock->s_conn); switch (option) { #ifdef CONFIG_NET_MLD @@ -231,7 +232,7 @@ int ipv6_setsockopt(FAR struct socket *psock, int option, break; } - net_unlock(); + conn_unlock(psock->s_conn); return ret; }
