drivers/net/ethernet/sfc/efx.c:3032:1-20: alloc with no test, possible model on line 3041

From: kbuild test robot
Date: Thu May 31 2018 - 18:20:28 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: dd52cb879063ca5470d5a093c32180ba74fa528e
commit: f8d6203780b73c07dc49ee421fedae8edb76b6e4 sfc: ARFS filter IDs
date: 5 weeks ago


coccinelle warnings: (new ones prefixed by >>)

>> drivers/net/ethernet/sfc/efx.c:3032:1-20: alloc with no test, possible model on line 3041
drivers/net/ethernet/sfc/efx.c:3032:1-20: alloc with no test, possible model on line 3062

vim +3032 drivers/net/ethernet/sfc/efx.c

2983
2984 /**************************************************************************
2985 *
2986 * Data housekeeping
2987 *
2988 **************************************************************************/
2989
2990 /* This zeroes out and then fills in the invariants in a struct
2991 * efx_nic (including all sub-structures).
2992 */
2993 static int efx_init_struct(struct efx_nic *efx,
2994 struct pci_dev *pci_dev, struct net_device *net_dev)
2995 {
2996 int rc = -ENOMEM, i;
2997
2998 /* Initialise common structures */
2999 INIT_LIST_HEAD(&efx->node);
3000 INIT_LIST_HEAD(&efx->secondary_list);
3001 spin_lock_init(&efx->biu_lock);
3002 #ifdef CONFIG_SFC_MTD
3003 INIT_LIST_HEAD(&efx->mtd_list);
3004 #endif
3005 INIT_WORK(&efx->reset_work, efx_reset_work);
3006 INIT_DELAYED_WORK(&efx->monitor_work, efx_monitor);
3007 INIT_DELAYED_WORK(&efx->selftest_work, efx_selftest_async_work);
3008 efx->pci_dev = pci_dev;
3009 efx->msg_enable = debug;
3010 efx->state = STATE_UNINIT;
3011 strlcpy(efx->name, pci_name(pci_dev), sizeof(efx->name));
3012
3013 efx->net_dev = net_dev;
3014 efx->rx_prefix_size = efx->type->rx_prefix_size;
3015 efx->rx_ip_align =
3016 NET_IP_ALIGN ? (efx->rx_prefix_size + NET_IP_ALIGN) % 4 : 0;
3017 efx->rx_packet_hash_offset =
3018 efx->type->rx_hash_offset - efx->type->rx_prefix_size;
3019 efx->rx_packet_ts_offset =
3020 efx->type->rx_ts_offset - efx->type->rx_prefix_size;
3021 INIT_LIST_HEAD(&efx->rss_context.list);
3022 mutex_init(&efx->rss_lock);
3023 spin_lock_init(&efx->stats_lock);
3024 efx->vi_stride = EFX_DEFAULT_VI_STRIDE;
3025 efx->num_mac_stats = MC_CMD_MAC_NSTATS;
3026 BUILD_BUG_ON(MC_CMD_MAC_NSTATS - 1 != MC_CMD_MAC_GENERATION_END);
3027 mutex_init(&efx->mac_lock);
3028 #ifdef CONFIG_RFS_ACCEL
3029 mutex_init(&efx->rps_mutex);
3030 spin_lock_init(&efx->rps_hash_lock);
3031 /* Failure to allocate is not fatal, but may degrade ARFS performance */
> 3032 efx->rps_hash_table = kcalloc(EFX_ARFS_HASH_TABLE_SIZE,
3033 sizeof(*efx->rps_hash_table), GFP_KERNEL);
3034 #endif
3035 efx->phy_op = &efx_dummy_phy_operations;
3036 efx->mdio.dev = net_dev;
3037 INIT_WORK(&efx->mac_work, efx_mac_work);
3038 init_waitqueue_head(&efx->flush_wq);
3039
3040 for (i = 0; i < EFX_MAX_CHANNELS; i++) {
> 3041 efx->channel[i] = efx_alloc_channel(efx, i, NULL);
3042 if (!efx->channel[i])
3043 goto fail;
3044 efx->msi_context[i].efx = efx;
3045 efx->msi_context[i].index = i;
3046 }
3047
3048 /* Higher numbered interrupt modes are less capable! */
3049 if (WARN_ON_ONCE(efx->type->max_interrupt_mode >
3050 efx->type->min_interrupt_mode)) {
3051 rc = -EIO;
3052 goto fail;
3053 }
3054 efx->interrupt_mode = max(efx->type->max_interrupt_mode,
3055 interrupt_mode);
3056 efx->interrupt_mode = min(efx->type->min_interrupt_mode,
3057 interrupt_mode);
3058
3059 /* Would be good to use the net_dev name, but we're too early */
3060 snprintf(efx->workqueue_name, sizeof(efx->workqueue_name), "sfc%s",
3061 pci_name(pci_dev));
3062 efx->workqueue = create_singlethread_workqueue(efx->workqueue_name);
3063 if (!efx->workqueue)
3064 goto fail;
3065
3066 return 0;
3067
3068 fail:
3069 efx_fini_struct(efx);
3070 return rc;
3071 }
3072

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation