All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@linaro.org>
To: Qi Zhang <qi.z.zhang@intel.com>
Cc: intel-wired-lan@lists.osuosl.org
Subject: [Intel-wired-lan] [bug report] ice: Enable FDIR Configure for AVF
Date: Mon, 1 Sep 2025 12:09:27 +0300	[thread overview]
Message-ID: <aLVix68cQNQr4CC8@stanley.mountain> (raw)

Hello Qi Zhang,

Commit 1f7ea1cd6a37 ("ice: Enable FDIR Configure for AVF") from Mar
9, 2021 (linux-next), leads to the following Smatch static checker
warning:

	drivers/net/ethernet/intel/ice/virt/fdir.c:2339 ice_vc_del_fdir_fltr()
	warn: missing error code here? 'kzalloc_noprof()' failed

drivers/net/ethernet/intel/ice/virt/fdir.c
    2311 int ice_vc_del_fdir_fltr(struct ice_vf *vf, u8 *msg)
    2312 {
    2313         struct virtchnl_fdir_del *fltr = (struct virtchnl_fdir_del *)msg;
    2314         struct virtchnl_fdir_del *stat = NULL;
    2315         struct virtchnl_fdir_fltr_conf *conf;
    2316         struct ice_vf_fdir *fdir = &vf->fdir;
    2317         enum virtchnl_status_code v_ret;
    2318         struct ice_fdir_fltr *input;
    2319         enum ice_fltr_ptype flow;
    2320         struct device *dev;
    2321         struct ice_pf *pf;
    2322         int is_tun = 0;
    2323         int len = 0;
    2324         int ret;
    2325 
    2326         pf = vf->pf;
    2327         dev = ice_pf_to_dev(pf);
    2328         ret = ice_vc_fdir_param_check(vf, fltr->vsi_id);
    2329         if (ret) {
    2330                 v_ret = VIRTCHNL_STATUS_ERR_PARAM;
    2331                 dev_dbg(dev, "Parameter check for VF %d failed\n", vf->vf_id);
    2332                 goto err_exit;
    2333         }
    2334 
    2335         stat = kzalloc(sizeof(*stat), GFP_KERNEL);
    2336         if (!stat) {
    2337                 v_ret = VIRTCHNL_STATUS_ERR_NO_MEMORY;

It's not clear if this is deliberate or not.  Maybe we could add a comment?
Here set v_ret.


    2338                 dev_dbg(dev, "Alloc stat for VF %d failed\n", vf->vf_id);
--> 2339                 goto err_exit;
    2340         }
    2341 
    2342         len = sizeof(*stat);
    2343 
    2344         conf = ice_vc_fdir_lookup_entry(vf, fltr->flow_id);
    2345         if (!conf) {
    2346                 v_ret = VIRTCHNL_STATUS_SUCCESS;
    2347                 stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NONEXIST;
    2348                 dev_dbg(dev, "VF %d: FDIR invalid flow_id:0x%X\n",
    2349                         vf->vf_id, fltr->flow_id);
    2350                 goto err_exit;
    2351         }
    2352 
    2353         /* Just return failure when ctrl_vsi idx is invalid */
    2354         if (vf->ctrl_vsi_idx == ICE_NO_VSI) {
    2355                 v_ret = VIRTCHNL_STATUS_SUCCESS;
    2356                 stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NORESOURCE;
    2357                 dev_err(dev, "Invalid FDIR ctrl_vsi for VF %d\n", vf->vf_id);
    2358                 goto err_exit;
    2359         }
    2360 
    2361         ret = ice_vc_fdir_set_irq_ctx(vf, conf, VIRTCHNL_OP_DEL_FDIR_FILTER);
    2362         if (ret) {
    2363                 v_ret = VIRTCHNL_STATUS_SUCCESS;
    2364                 stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NORESOURCE;
    2365                 dev_dbg(dev, "VF %d: set FDIR context failed\n", vf->vf_id);
    2366                 goto err_exit;
    2367         }
    2368 
    2369         /* For raw FDIR filters created by the parser */
    2370         if (conf->parser_ena) {
    2371                 ret = ice_vc_del_fdir_raw(vf, conf, &v_ret, stat, len);
    2372                 if (ret)
    2373                         goto err_del_tmr;
    2374                 goto exit;
    2375         }
    2376 
    2377         is_tun = ice_fdir_is_tunnel(conf->ttype);
    2378         ret = ice_vc_fdir_write_fltr(vf, conf, false, is_tun);
    2379         if (ret) {
    2380                 v_ret = VIRTCHNL_STATUS_SUCCESS;
    2381                 stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NORESOURCE;
    2382                 dev_err(dev, "VF %d: writing FDIR rule failed, ret:%d\n",
    2383                         vf->vf_id, ret);
    2384                 goto err_del_tmr;
    2385         }
    2386 
    2387         /* Remove unused profiles to avoid unexpected behaviors */
    2388         input = &conf->input;
    2389         flow = input->flow_type;
    2390         if (fdir->fdir_fltr_cnt[flow][is_tun] == 1)
    2391                 ice_vc_fdir_rem_prof(vf, flow, is_tun);
    2392 
    2393 exit:
    2394         kfree(stat);
    2395 
    2396         return ret;
    2397 
    2398 err_del_tmr:
    2399         ice_vc_fdir_clear_irq_ctx(vf);
    2400 err_exit:
    2401         ret = ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_DEL_FDIR_FILTER, v_ret,
    2402                                     (u8 *)stat, len);

But then "ret" is generally going to be success.

    2403         kfree(stat);
    2404         return ret;
    2405 }

regards,
dan carpenter

             reply	other threads:[~2025-09-01  9:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-01  9:09 Dan Carpenter [this message]
2025-09-01 11:15 ` [Intel-wired-lan] [bug report] ice: Enable FDIR Configure for AVF Przemek Kitszel
2025-09-01 11:52   ` Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aLVix68cQNQr4CC8@stanley.mountain \
    --to=dan.carpenter@linaro.org \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=qi.z.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.