On 7/31/23 00:27, Dan Carpenter wrote:
Hello Kui-Feng Lee, The patch 539c7e67aa4a: "selftests/bpf: Verify that the cgroup_skb filters receive expected packets." from Jun 23, 2023 (linux-next), leads to the following Smatch static checker warning: ./tools/testing/selftests/bpf/prog_tests/cgroup_tcp_skb.c:116 connect_client_server_v6() warn: unsigned 'addr.sin6_port' is never less than zero. ./tools/testing/selftests/bpf/prog_tests/cgroup_tcp_skb.c 107 static int connect_client_server_v6(int client_fd, int listen_fd) 108 { 109 struct sockaddr_in6 addr = { 110 .sin6_family = AF_INET6, 111 .sin6_addr = IN6ADDR_LOOPBACK_INIT, 112 }; 113 int err; 114 115 addr.sin6_port = htons(get_sock_port_v6(listen_fd)); --> 116 if (addr.sin6_port < 0) ^^^^^^^^^^^^^^^^^^ Impossible and also it doesn't make sense to compare network endian data with < 0.
Hi Dan, Thank you for pointing it out. It should check the returned value of get_sock_port_v6() before calling htons(). I will send a patch to fix it asap.
117 return -1; 118 119 err = connect(client_fd, (struct sockaddr *)&addr, sizeof(addr)); 120 if (err < 0) { 121 perror("connect"); 122 return -1; 123 } 124 125 return 0; 126 } regards, dan carpenter