Re: [PATCH net-next v2 8/9] octeon_ep: add PF-VF mailbox communication

From: Dan Carpenter
Date: Fri Dec 09 2022 - 03:48:29 EST


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