[openeuler:OLK-5.10 2954/2954] drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:407:30: sparse: sparse: incorrect type in assignment (different base types)

Hi Zhongyuan, First bad commit (maybe != root cause): tree: https://gitee.com/openeuler/kernel.git OLK-5.10 head: 90ff3e07cc268a8e40bd578dcc4907a3db419c52 commit: 695becd47b5fb077a9c94080f467eca7ee89ff8f [2954/2954] network_mgmt: Modified OLK5.10 ub compilation missing header files. config: arm64-randconfig-r133-20250610 compiler: aarch64-linux-gcc (GCC) 14.3.0 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@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202506110211.qecuZ8ix-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:311:5: sparse: sparse: symbol 'ip_notify_sysfs_create' was not declared. Should it be static? drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:340:6: sparse: sparse: symbol 'ip_notify_sysfs_destroy' was not declared. Should it be static?
drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:407:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned char [usertype] mask @@ got restricted __be32 [usertype] netmask @@ drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:407:30: sparse: expected unsigned char [usertype] mask drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:407:30: sparse: got restricted __be32 [usertype] netmask drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:378:16: sparse: sparse: symbol 'ub_ipv4_create_ip_notify_pkt' was not declared. Should it be static? drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:444:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned char [usertype] mask @@ got restricted __be32 [usertype] netmask @@ drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:444:30: sparse: expected unsigned char [usertype] mask drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:444:30: sparse: got restricted __be32 [usertype] netmask drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:415:16: sparse: sparse: symbol 'ub_ipv6_create_ip_notify_pkt' was not declared. Should it be static? drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:498:29: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __be32 [usertype] netmask @@ got unsigned char ifa_prefixlen @@ drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:498:29: sparse: expected restricted __be32 [usertype] netmask drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:498:29: sparse: got unsigned char ifa_prefixlen drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:546:30: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __be32 [usertype] netmask @@ got unsigned int [usertype] prefix_len @@ drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:546:30: sparse: expected restricted __be32 [usertype] netmask drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c:546:30: sparse: got unsigned int [usertype] prefix_len
vim +407 drivers/net/ub/dev/network_mgmt/./ip_notify/ip_notify.c 0f9f9f6603b274 Wenwu Yao 2023-07-20 377 0f9f9f6603b274 Wenwu Yao 2023-07-20 378 struct sk_buff *ub_ipv4_create_ip_notify_pkt(struct net_device *ndev, 0f9f9f6603b274 Wenwu Yao 2023-07-20 379 __be32 src_ip, const u8 *src_hw, 0f9f9f6603b274 Wenwu Yao 2023-07-20 380 __be32 netmask) 0f9f9f6603b274 Wenwu Yao 2023-07-20 381 { 0f9f9f6603b274 Wenwu Yao 2023-07-20 382 int hlen = LL_RESERVED_SPACE(ndev); 0f9f9f6603b274 Wenwu Yao 2023-07-20 383 int tlen = ndev->needed_tailroom; 0f9f9f6603b274 Wenwu Yao 2023-07-20 384 struct ip_notify_hdr *ipn_hdr_v4; 0f9f9f6603b274 Wenwu Yao 2023-07-20 385 struct sk_buff *skb; 0f9f9f6603b274 Wenwu Yao 2023-07-20 386 u8 dest_hw[UBL_ALEN]; 0f9f9f6603b274 Wenwu Yao 2023-07-20 387 0f9f9f6603b274 Wenwu Yao 2023-07-20 388 skb = alloc_skb(ip_notify_hdr_len() + hlen + tlen, GFP_ATOMIC); 0f9f9f6603b274 Wenwu Yao 2023-07-20 389 if (!skb) 0f9f9f6603b274 Wenwu Yao 2023-07-20 390 return NULL; 0f9f9f6603b274 Wenwu Yao 2023-07-20 391 0f9f9f6603b274 Wenwu Yao 2023-07-20 392 skb_reserve(skb, LL_RESERVED_SPACE(ndev)); 0f9f9f6603b274 Wenwu Yao 2023-07-20 393 skb_reset_network_header(skb); 0f9f9f6603b274 Wenwu Yao 2023-07-20 394 ipn_hdr_v4 = (struct ip_notify_hdr *)skb_put(skb, ip_notify_hdr_len()); 0f9f9f6603b274 Wenwu Yao 2023-07-20 395 memset(ipn_hdr_v4, 0, ip_notify_hdr_len()); 0f9f9f6603b274 Wenwu Yao 2023-07-20 396 skb->dev = ndev; 0f9f9f6603b274 Wenwu Yao 2023-07-20 397 skb->protocol = htons(ETH_P_UB); 0f9f9f6603b274 Wenwu Yao 2023-07-20 398 src_hw = ndev->dev_addr; 0f9f9f6603b274 Wenwu Yao 2023-07-20 399 memset(dest_hw, 0xff, UBL_ALEN); 0f9f9f6603b274 Wenwu Yao 2023-07-20 400 0f9f9f6603b274 Wenwu Yao 2023-07-20 401 /* fill the device header for the ipv4 notify frame */ 0f9f9f6603b274 Wenwu Yao 2023-07-20 402 ipn_hdr_v4->cfg = UB_NOIP_CFG_TYPE; 0f9f9f6603b274 Wenwu Yao 2023-07-20 403 ipn_hdr_v4->protocol = htons(SUB_PROTOCOL_IP_NOTIFY); 0f9f9f6603b274 Wenwu Yao 2023-07-20 404 memcpy(ipn_hdr_v4->dest_guid, dest_hw, UBL_ALEN); 0f9f9f6603b274 Wenwu Yao 2023-07-20 405 memcpy(ipn_hdr_v4->src_guid, ndev->dev_addr, UBL_ALEN); 0f9f9f6603b274 Wenwu Yao 2023-07-20 406 ipn_hdr_v4->pdu.ver = UB_PROTO_IPV4 << VER_SHIFT_4; /* IPv4 */ 0f9f9f6603b274 Wenwu Yao 2023-07-20 @407 ipn_hdr_v4->pdu.mask = netmask; 0f9f9f6603b274 Wenwu Yao 2023-07-20 408 ipn_hdr_v4->pdu.ipv4.ip = src_ip; 0f9f9f6603b274 Wenwu Yao 2023-07-20 409 0f9f9f6603b274 Wenwu Yao 2023-07-20 410 show_ip_notify_pkt_info(skb); 0f9f9f6603b274 Wenwu Yao 2023-07-20 411 0f9f9f6603b274 Wenwu Yao 2023-07-20 412 return skb; 0f9f9f6603b274 Wenwu Yao 2023-07-20 413 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 414 0f9f9f6603b274 Wenwu Yao 2023-07-20 415 struct sk_buff *ub_ipv6_create_ip_notify_pkt(struct net_device *ndev, 0f9f9f6603b274 Wenwu Yao 2023-07-20 416 u8 *src_ip, const u8 *src_hw, 0f9f9f6603b274 Wenwu Yao 2023-07-20 417 __be32 netmask) 0f9f9f6603b274 Wenwu Yao 2023-07-20 418 { 0f9f9f6603b274 Wenwu Yao 2023-07-20 419 int hlen = LL_RESERVED_SPACE(ndev); 0f9f9f6603b274 Wenwu Yao 2023-07-20 420 int tlen = ndev->needed_tailroom; 0f9f9f6603b274 Wenwu Yao 2023-07-20 421 struct ip_notify_hdr *ipn_hdr_v6; 0f9f9f6603b274 Wenwu Yao 2023-07-20 422 struct sk_buff *skb; 0f9f9f6603b274 Wenwu Yao 2023-07-20 423 u8 dest_hw[UBL_ALEN]; 0f9f9f6603b274 Wenwu Yao 2023-07-20 424 0f9f9f6603b274 Wenwu Yao 2023-07-20 425 skb = alloc_skb(ip_notify_hdr_len() + hlen + tlen, GFP_ATOMIC); 0f9f9f6603b274 Wenwu Yao 2023-07-20 426 if (!skb) 0f9f9f6603b274 Wenwu Yao 2023-07-20 427 return NULL; 0f9f9f6603b274 Wenwu Yao 2023-07-20 428 0f9f9f6603b274 Wenwu Yao 2023-07-20 429 skb_reserve(skb, LL_RESERVED_SPACE(ndev)); 0f9f9f6603b274 Wenwu Yao 2023-07-20 430 skb_reset_network_header(skb); 0f9f9f6603b274 Wenwu Yao 2023-07-20 431 ipn_hdr_v6 = (struct ip_notify_hdr *)skb_put(skb, ip_notify_hdr_len()); 0f9f9f6603b274 Wenwu Yao 2023-07-20 432 memset(ipn_hdr_v6, 0, ip_notify_hdr_len()); 0f9f9f6603b274 Wenwu Yao 2023-07-20 433 skb->dev = ndev; 0f9f9f6603b274 Wenwu Yao 2023-07-20 434 skb->protocol = htons(ETH_P_UB); 0f9f9f6603b274 Wenwu Yao 2023-07-20 435 src_hw = ndev->dev_addr; 0f9f9f6603b274 Wenwu Yao 2023-07-20 436 memset(dest_hw, 0xff, UBL_ALEN); 0f9f9f6603b274 Wenwu Yao 2023-07-20 437 0f9f9f6603b274 Wenwu Yao 2023-07-20 438 /* fill the device header for the ip notify frame */ 0f9f9f6603b274 Wenwu Yao 2023-07-20 439 ipn_hdr_v6->cfg = UB_NOIP_CFG_TYPE; 0f9f9f6603b274 Wenwu Yao 2023-07-20 440 ipn_hdr_v6->protocol = htons(SUB_PROTOCOL_IP_NOTIFY); 0f9f9f6603b274 Wenwu Yao 2023-07-20 441 memcpy(ipn_hdr_v6->dest_guid, dest_hw, UBL_ALEN); 0f9f9f6603b274 Wenwu Yao 2023-07-20 442 memcpy(ipn_hdr_v6->src_guid, ndev->dev_addr, UBL_ALEN); 0f9f9f6603b274 Wenwu Yao 2023-07-20 443 ipn_hdr_v6->pdu.ver = UB_PROTO_IPV6 << VER_SHIFT_4; /* IPv6 */ 0f9f9f6603b274 Wenwu Yao 2023-07-20 444 ipn_hdr_v6->pdu.mask = netmask; 0f9f9f6603b274 Wenwu Yao 2023-07-20 445 memcpy(ipn_hdr_v6->pdu.ipv6.ip, src_ip, UBL_ALEN); 0f9f9f6603b274 Wenwu Yao 2023-07-20 446 0f9f9f6603b274 Wenwu Yao 2023-07-20 447 show_ip_notify_pkt_info(skb); 0f9f9f6603b274 Wenwu Yao 2023-07-20 448 0f9f9f6603b274 Wenwu Yao 2023-07-20 449 return skb; 0f9f9f6603b274 Wenwu Yao 2023-07-20 450 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 451 0f9f9f6603b274 Wenwu Yao 2023-07-20 452 static void ub_update_tx_stats(int ptype, struct sk_buff *skb, int rc) 0f9f9f6603b274 Wenwu Yao 2023-07-20 453 { 0f9f9f6603b274 Wenwu Yao 2023-07-20 454 struct list_head *dev_list = ub_nm_get_dev_list(); 0f9f9f6603b274 Wenwu Yao 2023-07-20 455 struct net_device *ndev = skb->dev; 0f9f9f6603b274 Wenwu Yao 2023-07-20 456 struct ub_nm_device *nm_dev; 0f9f9f6603b274 Wenwu Yao 2023-07-20 457 0f9f9f6603b274 Wenwu Yao 2023-07-20 458 ub_nm_down_read(); 0f9f9f6603b274 Wenwu Yao 2023-07-20 459 list_for_each_entry(nm_dev, dev_list, nm_dev_list) 0f9f9f6603b274 Wenwu Yao 2023-07-20 460 if (nm_dev->ndev == ndev) 0f9f9f6603b274 Wenwu Yao 2023-07-20 461 goto out; 0f9f9f6603b274 Wenwu Yao 2023-07-20 462 ub_nm_up_read(); 0f9f9f6603b274 Wenwu Yao 2023-07-20 463 0f9f9f6603b274 Wenwu Yao 2023-07-20 464 return; 0f9f9f6603b274 Wenwu Yao 2023-07-20 465 0f9f9f6603b274 Wenwu Yao 2023-07-20 466 out: 0f9f9f6603b274 Wenwu Yao 2023-07-20 467 switch (rc) { 0f9f9f6603b274 Wenwu Yao 2023-07-20 468 case NETDEV_TX_OK: 0f9f9f6603b274 Wenwu Yao 2023-07-20 469 if (ptype == UB_PROTO_IPV4) 0f9f9f6603b274 Wenwu Yao 2023-07-20 470 atomic64_inc(&nm_dev->sys_ctx.ip_notify_ctx.stats.good_ipv4_notify_tx_cnt); 0f9f9f6603b274 Wenwu Yao 2023-07-20 471 else 0f9f9f6603b274 Wenwu Yao 2023-07-20 472 atomic64_inc(&nm_dev->sys_ctx.ip_notify_ctx.stats.good_ipv6_notify_tx_cnt); 0f9f9f6603b274 Wenwu Yao 2023-07-20 473 break; 0f9f9f6603b274 Wenwu Yao 2023-07-20 474 case NET_XMIT_DROP: 0f9f9f6603b274 Wenwu Yao 2023-07-20 475 case NETDEV_TX_BUSY: 0f9f9f6603b274 Wenwu Yao 2023-07-20 476 if (ptype == UB_PROTO_IPV4) 0f9f9f6603b274 Wenwu Yao 2023-07-20 477 atomic64_inc(&nm_dev->sys_ctx.ip_notify_ctx.stats.bad_ipv4_notify_tx_cnt); 0f9f9f6603b274 Wenwu Yao 2023-07-20 478 else 0f9f9f6603b274 Wenwu Yao 2023-07-20 479 atomic64_inc(&nm_dev->sys_ctx.ip_notify_ctx.stats.bad_ipv6_notify_tx_cnt); 0f9f9f6603b274 Wenwu Yao 2023-07-20 480 break; 0f9f9f6603b274 Wenwu Yao 2023-07-20 481 default: 0f9f9f6603b274 Wenwu Yao 2023-07-20 482 break; 0f9f9f6603b274 Wenwu Yao 2023-07-20 483 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 484 ub_nm_up_read(); 0f9f9f6603b274 Wenwu Yao 2023-07-20 485 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 486 0f9f9f6603b274 Wenwu Yao 2023-07-20 487 static void ub_xmit_ip_notify_pkt(int ptype, struct sk_buff *skb) 0f9f9f6603b274 Wenwu Yao 2023-07-20 488 { 0f9f9f6603b274 Wenwu Yao 2023-07-20 489 int rc; 0f9f9f6603b274 Wenwu Yao 2023-07-20 490 0f9f9f6603b274 Wenwu Yao 2023-07-20 491 rc = dev_queue_xmit(skb); 0f9f9f6603b274 Wenwu Yao 2023-07-20 492 ub_update_tx_stats(ptype, skb, rc); 0f9f9f6603b274 Wenwu Yao 2023-07-20 493 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 494 0f9f9f6603b274 Wenwu Yao 2023-07-20 495 static void ub_ipv4_send_ip_notify(struct net_device *ndev, 0f9f9f6603b274 Wenwu Yao 2023-07-20 496 struct in_ifaddr *ifa) 0f9f9f6603b274 Wenwu Yao 2023-07-20 497 { 0f9f9f6603b274 Wenwu Yao 2023-07-20 @498 __be32 netmask = ifa->ifa_prefixlen; 0f9f9f6603b274 Wenwu Yao 2023-07-20 499 const u8 *src_hw = ndev->dev_addr; 0f9f9f6603b274 Wenwu Yao 2023-07-20 500 __be32 src_ip = ifa->ifa_address; 0f9f9f6603b274 Wenwu Yao 2023-07-20 501 struct sk_buff *skb; 0f9f9f6603b274 Wenwu Yao 2023-07-20 502 0f9f9f6603b274 Wenwu Yao 2023-07-20 503 skb = ub_ipv4_create_ip_notify_pkt(ndev, src_ip, src_hw, netmask); 0f9f9f6603b274 Wenwu Yao 2023-07-20 504 if (!skb) { 0f9f9f6603b274 Wenwu Yao 2023-07-20 505 netdev_err(ndev, "failed to create ip notify pkt.\n"); 0f9f9f6603b274 Wenwu Yao 2023-07-20 506 return; 0f9f9f6603b274 Wenwu Yao 2023-07-20 507 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 508 0f9f9f6603b274 Wenwu Yao 2023-07-20 509 ub_xmit_ip_notify_pkt(UB_PROTO_IPV4, skb); 0f9f9f6603b274 Wenwu Yao 2023-07-20 510 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 511 0f9f9f6603b274 Wenwu Yao 2023-07-20 512 int ub_ipv4_notify_event(struct notifier_block *nb, unsigned long event, 0f9f9f6603b274 Wenwu Yao 2023-07-20 513 void *ptr) 0f9f9f6603b274 Wenwu Yao 2023-07-20 514 { 0f9f9f6603b274 Wenwu Yao 2023-07-20 515 struct net_device *event_ndev; 0f9f9f6603b274 Wenwu Yao 2023-07-20 516 struct in_device *in_dev; 0f9f9f6603b274 Wenwu Yao 2023-07-20 517 struct in_ifaddr *ifa; 0f9f9f6603b274 Wenwu Yao 2023-07-20 518 0f9f9f6603b274 Wenwu Yao 2023-07-20 519 ifa = (struct in_ifaddr *)ptr; 0f9f9f6603b274 Wenwu Yao 2023-07-20 520 event_ndev = ifa->ifa_dev->dev; 0f9f9f6603b274 Wenwu Yao 2023-07-20 521 0f9f9f6603b274 Wenwu Yao 2023-07-20 522 if (event_ndev->type != ARPHRD_UB) 0f9f9f6603b274 Wenwu Yao 2023-07-20 523 return NOTIFY_DONE; 0f9f9f6603b274 Wenwu Yao 2023-07-20 524 0f9f9f6603b274 Wenwu Yao 2023-07-20 525 netdev_info(event_ndev, "ub_ipv4_event: 0x%lx\n", event); 0f9f9f6603b274 Wenwu Yao 2023-07-20 526 0f9f9f6603b274 Wenwu Yao 2023-07-20 527 if (event != NETDEV_UP) 0f9f9f6603b274 Wenwu Yao 2023-07-20 528 return NOTIFY_DONE; 0f9f9f6603b274 Wenwu Yao 2023-07-20 529 0f9f9f6603b274 Wenwu Yao 2023-07-20 530 in_dev = __in_dev_get_rtnl(event_ndev); 0f9f9f6603b274 Wenwu Yao 2023-07-20 531 if (!IN_DEV_ARP_NOTIFY(in_dev)) 0f9f9f6603b274 Wenwu Yao 2023-07-20 532 return NOTIFY_DONE; 0f9f9f6603b274 Wenwu Yao 2023-07-20 533 0f9f9f6603b274 Wenwu Yao 2023-07-20 534 if (event_ndev->flags & IFF_UP) { 0f9f9f6603b274 Wenwu Yao 2023-07-20 535 netdev_info(event_ndev, "ub_ipv4_send_ip_notify.\n"); 0f9f9f6603b274 Wenwu Yao 2023-07-20 536 ub_ipv4_send_ip_notify(event_ndev, ifa); 0f9f9f6603b274 Wenwu Yao 2023-07-20 537 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 538 0f9f9f6603b274 Wenwu Yao 2023-07-20 539 return NOTIFY_DONE; 0f9f9f6603b274 Wenwu Yao 2023-07-20 540 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 541 0f9f9f6603b274 Wenwu Yao 2023-07-20 542 static void ub_ipv6_send_ip_notify(struct net_device *ndev, 0f9f9f6603b274 Wenwu Yao 2023-07-20 543 struct inet6_ifaddr *ifa6) 0f9f9f6603b274 Wenwu Yao 2023-07-20 544 { 0f9f9f6603b274 Wenwu Yao 2023-07-20 545 const u8 *src_hw = ndev->dev_addr; 0f9f9f6603b274 Wenwu Yao 2023-07-20 @546 __be32 netmask = ifa6->prefix_len; 0f9f9f6603b274 Wenwu Yao 2023-07-20 547 struct sk_buff *skb; 0f9f9f6603b274 Wenwu Yao 2023-07-20 548 u8 src_ip[IPV6_ADDR_LEN]; 0f9f9f6603b274 Wenwu Yao 2023-07-20 549 0f9f9f6603b274 Wenwu Yao 2023-07-20 550 memcpy(src_ip, &ifa6->addr, IPV6_ADDR_LEN); 0f9f9f6603b274 Wenwu Yao 2023-07-20 551 skb = ub_ipv6_create_ip_notify_pkt(ndev, src_ip, src_hw, netmask); 0f9f9f6603b274 Wenwu Yao 2023-07-20 552 if (!skb) { 0f9f9f6603b274 Wenwu Yao 2023-07-20 553 netdev_err(ndev, "failed to create ipv6 notify pkt.\n"); 0f9f9f6603b274 Wenwu Yao 2023-07-20 554 return; 0f9f9f6603b274 Wenwu Yao 2023-07-20 555 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 556 0f9f9f6603b274 Wenwu Yao 2023-07-20 557 ub_xmit_ip_notify_pkt(UB_PROTO_IPV6, skb); 0f9f9f6603b274 Wenwu Yao 2023-07-20 558 } 0f9f9f6603b274 Wenwu Yao 2023-07-20 559 :::::: The code at line 407 was first introduced by commit :::::: 0f9f9f6603b27412118019e51cf8e6d8e0422707 network_mgmt: Support IP notify Protocol. :::::: TO: Wenwu Yao <yaowenwu1@huawei.com> :::::: CC: Jeiwei Li <lijiewei5@huawei.com> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
participants (1)
-
kernel test robot