Hi Jason, kernel test robot noticed the following build warnings: [auto build test WARNING on net-next/main] url: https://github.com/intel-lab-lkp/linux/commits/Jason-Xing/net-timestamp-add-bpf-infrastructure-to-allow-exposing-more-information-later/20241008-175458 base: net-next/main patch link: https://lore.kernel.org/r/20241008095109.99918-9-kerneljasonxing%40gmail.com patch subject: [PATCH net-next 8/9] net-timestamp: add bpf framework for rx timestamps config: x86_64-randconfig-122-20241009 (https://download.01.org/0day-ci/archive/20241009/202410091245.zCD0FszC-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241009/202410091245.zCD0FszC-lkp@xxxxxxxxx/reproduce) 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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202410091245.zCD0FszC-lkp@xxxxxxxxx/ sparse warnings: (new ones prefixed by >>) >> net/ipv4/tcp.c:2297:36: sparse: sparse: incorrect type in argument 1 (different modifiers) @@ expected struct sock *sk @@ got struct sock const *sk @@ net/ipv4/tcp.c:2297:36: sparse: expected struct sock *sk net/ipv4/tcp.c:2297:36: sparse: got struct sock const *sk vim +2297 net/ipv4/tcp.c 2288 2289 /* Similar to __sock_recv_timestamp, but does not require an skb */ 2290 void tcp_recv_timestamp(struct msghdr *msg, const struct sock *sk, 2291 struct scm_timestamping_internal *tss) 2292 { 2293 int new_tstamp = sock_flag(sk, SOCK_TSTAMP_NEW); 2294 u32 tsflags = READ_ONCE(sk->sk_tsflags); 2295 bool has_timestamping = false; 2296 > 2297 if (tcp_bpf_recv_timestamp(sk, tss)) 2298 return; 2299 2300 if (tss->ts[0].tv_sec || tss->ts[0].tv_nsec) { 2301 if (sock_flag(sk, SOCK_RCVTSTAMP)) { 2302 if (sock_flag(sk, SOCK_RCVTSTAMPNS)) { 2303 if (new_tstamp) { 2304 struct __kernel_timespec kts = { 2305 .tv_sec = tss->ts[0].tv_sec, 2306 .tv_nsec = tss->ts[0].tv_nsec, 2307 }; 2308 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMPNS_NEW, 2309 sizeof(kts), &kts); 2310 } else { 2311 struct __kernel_old_timespec ts_old = { 2312 .tv_sec = tss->ts[0].tv_sec, 2313 .tv_nsec = tss->ts[0].tv_nsec, 2314 }; 2315 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMPNS_OLD, 2316 sizeof(ts_old), &ts_old); 2317 } 2318 } else { 2319 if (new_tstamp) { 2320 struct __kernel_sock_timeval stv = { 2321 .tv_sec = tss->ts[0].tv_sec, 2322 .tv_usec = tss->ts[0].tv_nsec / 1000, 2323 }; 2324 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMP_NEW, 2325 sizeof(stv), &stv); 2326 } else { 2327 struct __kernel_old_timeval tv = { 2328 .tv_sec = tss->ts[0].tv_sec, 2329 .tv_usec = tss->ts[0].tv_nsec / 1000, 2330 }; 2331 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMP_OLD, 2332 sizeof(tv), &tv); 2333 } 2334 } 2335 } 2336 2337 if (tsflags & SOF_TIMESTAMPING_SOFTWARE && 2338 (tsflags & SOF_TIMESTAMPING_RX_SOFTWARE || 2339 !(tsflags & SOF_TIMESTAMPING_OPT_RX_FILTER))) 2340 has_timestamping = true; 2341 else 2342 tss->ts[0] = (struct timespec64) {0}; 2343 } 2344 2345 if (tss->ts[2].tv_sec || tss->ts[2].tv_nsec) { 2346 if (tsflags & SOF_TIMESTAMPING_RAW_HARDWARE && 2347 (tsflags & SOF_TIMESTAMPING_RX_HARDWARE || 2348 !(tsflags & SOF_TIMESTAMPING_OPT_RX_FILTER))) 2349 has_timestamping = true; 2350 else 2351 tss->ts[2] = (struct timespec64) {0}; 2352 } 2353 2354 if (has_timestamping) { 2355 tss->ts[1] = (struct timespec64) {0}; 2356 if (sock_flag(sk, SOCK_TSTAMP_NEW)) 2357 put_cmsg_scm_timestamping64(msg, tss); 2358 else 2359 put_cmsg_scm_timestamping(msg, tss); 2360 } 2361 } 2362 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki