tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: 56da8c1ec8638f6ad4df737a133a41b106a3ce42 commit: fa2cd1217a55bfd5ad96e991f64f72d9692844e1 [3508/3508] urma: add network framework facilities for ubcore. config: arm64-randconfig-r112-20251210 (https://download.01.org/0day-ci/archive/20251210/202512101830.7qQXxUnc-lkp@i...) compiler: aarch64-linux-gcc (GCC) 13.4.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251210/202512101830.7qQXxUnc-lkp@i...) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202512101830.7qQXxUnc-lkp@intel.com/ sparse warnings: (new ones prefixed by >>)
drivers/ub/urma/ubcore/net/ubcore_sock.c:73:39: sparse: sparse: restricted __be32 degrades to integer drivers/ub/urma/ubcore/net/ubcore_sock.c:78:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] s_addr @@ got unsigned int [usertype] addr @@ drivers/ub/urma/ubcore/net/ubcore_sock.c:78:45: sparse: expected restricted __be32 [usertype] s_addr drivers/ub/urma/ubcore/net/ubcore_sock.c:78:45: sparse: got unsigned int [usertype] addr drivers/ub/urma/ubcore/net/ubcore_sock.c:181:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] addr @@ got restricted __be32 [usertype] s_addr @@ drivers/ub/urma/ubcore/net/ubcore_sock.c:181:35: sparse: expected unsigned int [usertype] addr drivers/ub/urma/ubcore/net/ubcore_sock.c:181:35: sparse: got restricted __be32 [usertype] s_addr drivers/ub/urma/ubcore/net/ubcore_sock.c:348:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __poll_t [usertype] _key @@ got int @@ drivers/ub/urma/ubcore/net/ubcore_sock.c:348:24: sparse: expected restricted __poll_t [usertype] _key drivers/ub/urma/ubcore/net/ubcore_sock.c:348:24: sparse: got int drivers/ub/urma/ubcore/net/ubcore_sock.c:527:29: sparse: sparse: restricted __poll_t degrades to integer drivers/ub/urma/ubcore/net/ubcore_sock.c:529:34: sparse: sparse: restricted __poll_t degrades to integer -- drivers/ub/urma/ubcore/net/ubcore_session.c:38:31: sparse: sparse: symbol 'session_ctx' was not declared. Should it be static?
vim +73 drivers/ub/urma/ubcore/net/ubcore_sock.c 68 69 static void k_parse_addr(union ubcore_net_addr_union *ub_addr, uint16_t port, 70 struct sockaddr *sk_addr, int *sk_addr_size) 71 { 72 if (ub_addr->in4.reserved1 == 0 &&
73 ub_addr->in4.reserved2 == htonl(IPV4_MAP_IPV6_PREFIX)) { 74 struct sockaddr_in *sk_addr_in = (struct sockaddr_in *)sk_addr; 75 76 sk_addr_in->sin_family = AF_INET; 77 sk_addr_in->sin_port = htons(port); 78 sk_addr_in->sin_addr.s_addr = ub_addr->in4.addr; 79 80 *sk_addr_size = (int)sizeof(*sk_addr_in); 81 } else { 82 struct sockaddr_in6 *sk_addr_in6 = 83 (struct sockaddr_in6 *)sk_addr; 84 85 sk_addr_in6->sin6_family = AF_INET6; 86 sk_addr_in6->sin6_port = htons(port); 87 memcpy(&sk_addr_in6->sin6_addr, &ub_addr->in6, 88 sizeof(ub_addr->in6)); 89 90 *sk_addr_size = (int)sizeof(*sk_addr_in6); 91 } 92 } 93 94 static int k_setsockopt_keepalive(struct socket *sock) 95 { 96 int keepidle = 5; 97 int keepcnt = 3; 98 99 sock_set_keepalive(sock->sk); 100 tcp_sock_set_keepcnt(sock->sk, keepcnt); 101 tcp_sock_set_keepidle(sock->sk, keepidle); 102 tcp_sock_set_keepintvl(sock->sk, keepidle); 103 104 return 0; 105 } 106 107 static inline void k_setsockopt_reuse(struct socket *sock) 108 { 109 sock->sk->sk_reuse = true; 110 } 111 112 static inline void k_close(struct socket *sock) 113 { 114 sock_release(sock); 115 } 116 117 static struct socket *k_listen(union ubcore_net_addr_union *ub_addr, 118 uint16_t port) 119 { 120 struct socket *sock = NULL; 121 struct sockaddr_in6 sk_addr_inner = { 0 }; 122 struct sockaddr *sk_addr = (struct sockaddr *)&sk_addr_inner; 123 int sk_addr_size, backlog = 128; 124 int ret; 125 126 k_parse_addr(ub_addr, port, sk_addr, &sk_addr_size); 127 128 ret = sock_create(sk_addr->sa_family, SOCK_STREAM, 0, &sock); 129 if (ret < 0) { 130 ubcore_log_err("Failed to create socket"); 131 return NULL; 132 } 133 134 k_setsockopt_reuse(sock); 135 136 ret = kernel_bind(sock, sk_addr, sk_addr_size); 137 if (ret < 0) { 138 ubcore_log_err("Failed to call kernel_bind, ret: %d.\n", ret); 139 goto destroy_sock; 140 } 141 142 ret = kernel_listen(sock, backlog); 143 if (ret < 0) { 144 ubcore_log_err("Failed to call kernel_listen"); 145 goto destroy_sock; 146 } 147 148 return sock; 149 150 destroy_sock: 151 k_close(sock); 152 return NULL; 153 } 154 155 static struct socket *k_accept(struct socket *sock, 156 union ubcore_net_addr_union *ub_addr) 157 { 158 struct socket *newsock = NULL; 159 struct sockaddr_in6 sk_addr_inner = { 0 }; 160 struct sockaddr *sk_addr = (struct sockaddr *)&sk_addr_inner; 161 int ret; 162 163 ret = kernel_accept(sock, &newsock, 0); 164 if (ret < 0) { 165 ubcore_log_err("Failed to call kernel_accept"); 166 return NULL; 167 } 168 169 ret = kernel_getpeername(newsock, sk_addr); 170 if (ret == sizeof(struct sockaddr_in6) && 171 sk_addr->sa_family == AF_INET6) { 172 struct sockaddr_in6 *sk_addr_in6 = 173 (struct sockaddr_in6 *)sk_addr; 174 175 memcpy(&ub_addr->in6, &sk_addr_in6->sin6_addr, 176 sizeof(sk_addr_in6->sin6_addr)); 177 } else if (ret == sizeof(struct sockaddr_in) && 178 sk_addr->sa_family == AF_INET) { 179 struct sockaddr_in *sk_addr_in = (struct sockaddr_in *)sk_addr; 180 181 ub_addr->in4.addr = sk_addr_in->sin_addr.s_addr; 182 ub_addr->in4.reserved2 = IPV4_MAP_IPV6_PREFIX; 183 } else { 184 ubcore_log_err("Failed to call kernel_getpeername"); 185 goto destroy_sock; 186 } 187 188 ret = k_setsockopt_keepalive(newsock); 189 if (ret < 0) { 190 ubcore_log_err("Failed to set socket keepalive"); 191 goto destroy_sock; 192 } 193 194 return newsock; 195 196 destroy_sock: 197 k_close(newsock); 198 return NULL; 199 } 200
-- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki