* [Intel-wired-lan] [bug report] i40e: Log info when PF is entering and leaving Allmulti mode.
@ 2019-08-19 12:02 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2019-08-19 12:02 UTC (permalink / raw)
To: intel-wired-lan
Hello Czeslaw Zagorski,
The patch b603f9dc20af: "i40e: Log info when PF is entering and
leaving Allmulti mode." from Jul 2, 2019, leads to the following
static checker warning:
drivers/net/ethernet/intel/i40e/i40e_main.c:2534 i40e_sync_vsi_filters()
error: we previously assumed 'vsi->netdev' could be null (see line 2286)
drivers/net/ethernet/intel/i40e/i40e_main.c
2254 int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
2255 {
2256 struct hlist_head tmp_add_list, tmp_del_list;
2257 struct i40e_mac_filter *f;
2258 struct i40e_new_mac_filter *new, *add_head = NULL;
2259 struct i40e_hw *hw = &vsi->back->hw;
2260 bool old_overflow, new_overflow;
2261 unsigned int failed_filters = 0;
2262 unsigned int vlan_filters = 0;
2263 char vsi_name[16] = "PF";
2264 int filter_list_len = 0;
2265 i40e_status aq_ret = 0;
2266 u32 changed_flags = 0;
2267 struct hlist_node *h;
2268 struct i40e_pf *pf;
2269 int num_add = 0;
2270 int num_del = 0;
2271 int retval = 0;
2272 u16 cmd_flags;
2273 int list_size;
2274 int bkt;
2275
2276 /* empty array typed pointers, kcalloc later */
2277 struct i40e_aqc_add_macvlan_element_data *add_list;
2278 struct i40e_aqc_remove_macvlan_element_data *del_list;
2279
2280 while (test_and_set_bit(__I40E_VSI_SYNCING_FILTERS, vsi->state))
2281 usleep_range(1000, 2000);
2282 pf = vsi->back;
2283
2284 old_overflow = test_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
2285
2286 if (vsi->netdev) {
^^^^^^^^^^^
The existing code assumes that this can be NULL.
2287 changed_flags = vsi->current_netdev_flags ^ vsi->netdev->flags;
2288 vsi->current_netdev_flags = vsi->netdev->flags;
2289 }
2290
[ snip ]
2516 /* check for changes in promiscuous modes */
2517 if (changed_flags & IFF_ALLMULTI) {
2518 bool cur_multipromisc;
2519
2520 cur_multipromisc = !!(vsi->current_netdev_flags & IFF_ALLMULTI);
2521 aq_ret = i40e_aq_set_vsi_multicast_promiscuous(&vsi->back->hw,
2522 vsi->seid,
2523 cur_multipromisc,
2524 NULL);
2525 if (aq_ret) {
2526 retval = i40e_aq_rc_to_posix(aq_ret,
2527 hw->aq.asq_last_status);
2528 dev_info(&pf->pdev->dev,
2529 "set multi promisc failed on %s, err %s aq_err %s\n",
2530 vsi_name,
2531 i40e_stat_str(hw, aq_ret),
2532 i40e_aq_str(hw, hw->aq.asq_last_status));
2533 } else {
2534 dev_info(&pf->pdev->dev, "%s is %s allmulti mode.\n",
2535 vsi->netdev->name,
^^^^^^^^^^^^^^^^^
Unchecked dereference. Do you want to use vsi_name instead?
2536 cur_multipromisc ? "entering" : "leaving");
2537 }
2538 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-08-19 12:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-08-19 12:02 [Intel-wired-lan] [bug report] i40e: Log info when PF is entering and leaving Allmulti mode Dan Carpenter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.