Hi Veerasenareddy, url: https://github.com/intel-lab-lkp/linux/commits/Veerasenareddy-Burru/octeon_ep-Update-PF-mailbox-for-VF/20221130-110134 base: 7a168f560e3c3829b74a893d3655caab14a7aef8 patch link: https://lore.kernel.org/r/20221129130933.25231-9-vburru%40marvell.com patch subject: [PATCH net-next v2 8/9] octeon_ep: add PF-VF mailbox communication config: ia64-randconfig-m041-20221204 compiler: ia64-linux-gcc (GCC) 12.1.0 If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Dan Carpenter <error27@xxxxxxxxx> New smatch warnings: drivers/net/ethernet/marvell/octeon_ep/octep_main.c:1105 octep_probe() warn: missing unwind goto? vim +1105 drivers/net/ethernet/marvell/octeon_ep/octep_main.c 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1046 static int octep_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1047 { 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1048 struct octep_device *octep_dev = NULL; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1049 struct net_device *netdev; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1050 int err; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1051 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1052 err = pci_enable_device(pdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1053 if (err) { 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1054 dev_err(&pdev->dev, "Failed to enable PCI device\n"); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1055 return err; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1056 } 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1057 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1058 err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1059 if (err) { 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1060 dev_err(&pdev->dev, "Failed to set DMA mask !!\n"); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1061 goto err_dma_mask; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1062 } 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1063 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1064 err = pci_request_mem_regions(pdev, OCTEP_DRV_NAME); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1065 if (err) { 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1066 dev_err(&pdev->dev, "Failed to map PCI memory regions\n"); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1067 goto err_pci_regions; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1068 } 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1069 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1070 pci_enable_pcie_error_reporting(pdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1071 pci_set_master(pdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1072 a36869e03997c0 Veerasenareddy Burru 2022-11-29 1073 #define FW_STATUS_READY 1 a36869e03997c0 Veerasenareddy Burru 2022-11-29 1074 if (get_fw_ready_status(pdev) != FW_STATUS_READY) { a36869e03997c0 Veerasenareddy Burru 2022-11-29 1075 dev_notice(&pdev->dev, "Firmware not ready; defer probe.\n"); a36869e03997c0 Veerasenareddy Burru 2022-11-29 1076 err = -EPROBE_DEFER; a36869e03997c0 Veerasenareddy Burru 2022-11-29 1077 goto err_alloc_netdev; a36869e03997c0 Veerasenareddy Burru 2022-11-29 1078 } a36869e03997c0 Veerasenareddy Burru 2022-11-29 1079 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1080 netdev = alloc_etherdev_mq(sizeof(struct octep_device), 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1081 OCTEP_MAX_QUEUES); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1082 if (!netdev) { 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1083 dev_err(&pdev->dev, "Failed to allocate netdev\n"); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1084 err = -ENOMEM; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1085 goto err_alloc_netdev; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1086 } 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1087 SET_NETDEV_DEV(netdev, &pdev->dev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1088 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1089 octep_dev = netdev_priv(netdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1090 octep_dev->netdev = netdev; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1091 octep_dev->pdev = pdev; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1092 octep_dev->dev = &pdev->dev; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1093 pci_set_drvdata(pdev, octep_dev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1094 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1095 err = octep_device_setup(octep_dev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1096 if (err) { 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1097 dev_err(&pdev->dev, "Device setup failed\n"); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1098 goto err_octep_config; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1099 } f13f1764c1708a Veerasenareddy Burru 2022-11-29 1100 f13f1764c1708a Veerasenareddy Burru 2022-11-29 1101 err = octep_setup_pfvf_mbox(octep_dev); f13f1764c1708a Veerasenareddy Burru 2022-11-29 1102 if (err) { f13f1764c1708a Veerasenareddy Burru 2022-11-29 1103 dev_err(&pdev->dev, " pfvf mailbox setup failed\n"); f13f1764c1708a Veerasenareddy Burru 2022-11-29 1104 octep_ctrl_net_uninit(octep_dev); f13f1764c1708a Veerasenareddy Burru 2022-11-29 @1105 return err; This doesn't call free_netdev(netdev); so it's a leak. The octep_device_cleanup() function calls octep_ctrl_net_uninit() but presumably calling octep_device_cleanup() if octep_setup_pfvf_mbox() fails is a bug... Ideally there would be a function which could clean up octep_device_setup() and a different function which could clean up octep_setup_pfvf_mbox() but maybe that's impossible because of weird ordering constraints. f13f1764c1708a Veerasenareddy Burru 2022-11-29 1106 } f13f1764c1708a Veerasenareddy Burru 2022-11-29 1107 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1108 INIT_WORK(&octep_dev->tx_timeout_task, octep_tx_timeout_task); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1109 INIT_WORK(&octep_dev->ctrl_mbox_task, octep_ctrl_mbox_task); c310a95e2434e5 Veerasenareddy Burru 2022-11-29 1110 INIT_DELAYED_WORK(&octep_dev->intr_poll_task, octep_intr_poll_task); c310a95e2434e5 Veerasenareddy Burru 2022-11-29 1111 octep_dev->poll_non_ioq_intr = true; c310a95e2434e5 Veerasenareddy Burru 2022-11-29 1112 queue_delayed_work(octep_wq, &octep_dev->intr_poll_task, c310a95e2434e5 Veerasenareddy Burru 2022-11-29 1113 msecs_to_jiffies(OCTEP_INTR_POLL_TIME_MSECS)); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1114 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1115 netdev->netdev_ops = &octep_netdev_ops; 5cc256e79bff06 Veerasenareddy Burru 2022-04-12 1116 octep_set_ethtool_ops(netdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1117 netif_carrier_off(netdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1118 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1119 netdev->hw_features = NETIF_F_SG; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1120 netdev->features |= netdev->hw_features; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1121 netdev->min_mtu = OCTEP_MIN_MTU; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1122 netdev->max_mtu = OCTEP_MAX_MTU; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1123 netdev->mtu = OCTEP_DEFAULT_MTU; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1124 6494f39ec1f4be Veerasenareddy Burru 2022-11-29 1125 err = octep_ctrl_net_get_mac_addr(octep_dev, OCTEP_CTRL_NET_INVALID_VFID, 6494f39ec1f4be Veerasenareddy Burru 2022-11-29 1126 octep_dev->mac_addr); 848ffce2f0c93f Ziyang Xuan 2022-11-11 1127 if (err) { 848ffce2f0c93f Ziyang Xuan 2022-11-11 1128 dev_err(&pdev->dev, "Failed to get mac address\n"); 848ffce2f0c93f Ziyang Xuan 2022-11-11 1129 goto register_dev_err; 848ffce2f0c93f Ziyang Xuan 2022-11-11 1130 } 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1131 eth_hw_addr_set(netdev, octep_dev->mac_addr); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1132 0a03f3c511f57d Yang Yingliang 2022-04-15 1133 err = register_netdev(netdev); 0a03f3c511f57d Yang Yingliang 2022-04-15 1134 if (err) { 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1135 dev_err(&pdev->dev, "Failed to register netdev\n"); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1136 goto register_dev_err; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1137 } 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1138 dev_info(&pdev->dev, "Device probe successful\n"); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1139 return 0; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1140 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1141 register_dev_err: 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1142 octep_device_cleanup(octep_dev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1143 err_octep_config: 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1144 free_netdev(netdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1145 err_alloc_netdev: 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1146 pci_disable_pcie_error_reporting(pdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1147 pci_release_mem_regions(pdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1148 err_pci_regions: 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1149 err_dma_mask: 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1150 pci_disable_device(pdev); 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1151 return err; 862cd659a6fbac Veerasenareddy Burru 2022-04-12 1152 } -- 0-DAY CI Kernel Test Service https://01.org/lkp